2017-11-21 36 views
0

왜 안드로이드는 그리드 레이 아웃에서 셀을 채우는 기능을 포함하지 않을까요? 나는 이것을하기위한 몇 가지 방법의 여러 게시물을 읽었습니다. 한정된 성공으로 시도한 한 가지 방법은 다음과 같습니다. 내 문제는 수평 라인 분배기입니다. 세로 및 가로 코드를 제자리에서 실행하면 셀에 텍스트가 표시되지 않도록 셀이 차단 된 채 그리드가 끝납니다. 수평 코드를 제거하면 예상대로 각 열에 수직선이 표시됩니다. 무엇이 잘못되었는지에 대한 아이디어. 같은 방법으로 테이블에 눈금 선을 만들 수있었습니다. 그리드 레이 아웃은 세로 스크롤 안에있는 가로 스크롤 안에 있습니다. Gridlayout 배경이 검은 색입니다. 그래서 나는 파란 세포와 검은 칸막이 선으로 끝내야한다. 안드로이드 GridLayout 디바이더

enter image description here

편집

for (int y = 0; y < rownum; y++) { 
cols = 0; 
while (cols < columnum) { 
    TextView textViewD = new TextView(this); 
    textViewD.setTextSize(18); 
    textViewD.setWidth(300); 
    textViewD.setHeight(75); 
    textViewD.setTextColor(Color.WHITE); 
    textViewD.setBackgroundColor(Color.BLUE); 
    textViewD.setText(title); 
    //CREATE VERTICAL DIVIDER LINES 
      View v = new View(this); 
      v.setLayoutParams(new ViewGroup.LayoutParams(3, ViewGroup.LayoutParams.MATCH_PARENT)); 
      v.setBackgroundColor(Color.BLACK); 
    cols++; 
    gridLayoutE.addView(textViewD); 

    } 

    //CREATE HORIZONTAL DIVIDER LINES 

       View v1 = new View(this); 
     v1.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 3)); 
     v1.setBackgroundColor(Color.BLACK); 
     gridLayoutE.addView(v1); 

    } 
: 이것은 내가() 텍스트 뷰의

LinearLayout.LayoutParams에있는 params = (LinearLayout.LayoutParams) textViewD.getLayoutParams을 여백 설정에 대한 다른 게시물에 발견 것입니다; params.setMargins (2, 2, 2, 2); textViewD.setLayoutParams (params);

LinearLayout이 없으므로 시도 할 때 충돌이 발생합니다.

+0

당신은 당신이 그것을 같이하는 방법에 이미지를 포함 할 수 있나요? – Xenolion

+0

예상 결과의 이미지가 첨부되었습니다. – snowman

+0

xml없이 전체보기를 코드로 작성합니까? – Xenolion

답변

1

당신이 원하는처럼 같은 View를 얻을 수있는 다른 간단한 교묘 한 방법입니다 : 당신의 GridLayout의 배경이 이미 검은 색

때문에, setparams에 Textview의 레이아웃을 LinearLayout을 말할 수 다른 레이아웃 내부에 TextView를 넣어 MATCH_PARENT 다음 여백을 적용한 다음 2을 말한 다음 전체보기 (LinearLayout을 루트로 추가)를 추가합니다. 이렇게하면 여백이보기를 조금만 조정하여 이미지에 표시된 것처럼 일종의 경계를 표시하므로 검정색이 나타납니다! 이 방법을 사용하면 작업이 단순 해 지므로 가로 또는 세로 구분선을 만들 필요가 없습니다!

1

Xenolion에서 제안한 것과 비슷한 상황에 처한 사람들은 다음과 같습니다.

for (int y = 0; y < rownum; y++) { 
cols = 0; 
while (cols < columnum) { 
LinearLayout parent = new LinearLayout(this); 
      parent.setBackgroundColor(Color.BLACK); 
      parent.setOrientation(LinearLayout.HORIZONTAL); 
      LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT); 
params.setMargins(2, 2, 2, 2); //CREATES DIVIDER LINES 
TextView textViewD = new TextView(this); 
textViewD.setTextSize(18); 
textViewD.setWidth(300); 
textViewD.setHeight(75); 
textViewD.setTextColor(Color.WHITE); 
textViewD.setBackgroundColor(Color.BLUE); 
textViewD.setText(title); 
textViewD.setLayoutParams(params); 
parent.addView(textViewD); 
cols++; 
gridLayoutE.addView(parent); 
} 

은}

+0

네, 좋네요! – Xenolion