마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

GridLayout 자바코드에서 rowSpan, ColSpan 셀병합 하는 방법

0 추천

제가 동적으로 헤더의 셀 및 행을 병합하는 작업을 진행중입니다. 

 

이코드가 먹히지를 않아서 셀병합을 못하고 있습니다. 

이름이 같으면 병합을 하려고하는데 

java 코드상에서 병합할 수 있는 적절한 방법을 알려주시면 감사하겠습니다. 

데이터를 조회할 이중포문 소스도 추가하였습니다.

 

감사합니다.

params.columnSpec = GridLayout.spec(i, madeColSpan);
 for (int j = 0; j < 2; j++) {
            String spanTxt = "";
            int madeColSpan = 1;

            for (int i = 0; i< pmHeaderList.size(); i++) {
                GridLayout.Spec rowSpec = GridLayout.spec(j, 1.0f);
                GridLayout.Spec columnSpec = GridLayout.spec(i, 1.0f);
                GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec, columnSpec);
                PmCheckHeader tmpHeader = new PmCheckHeader();
                tmpHeader = pmHeaderList.get(i);
                int tmpRowSpan = 1 ;
                int madeRowSpan = 1;

                int tmpColSpan = 1 ;

                if (j == 0) {
                    TextView txtView = new TextView(this);
                   
                    txtView.setTextColor(Color.parseColor("#FFFFFF"));
                    txtView.setText(pmHeaderList.get(i).getHdrRow1());
                    txtView.setGravity(Gravity.CENTER);
                    txtView.setTextSize(14);
                    if (i == 0) {
                        txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 4 ));
                        
                    } else {
                        txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 8 ));
                        
                    }
                    txtView.setBackgroundResource(R.drawable.table_header_border);
                    // txtView.setHeight(60);
                    txtView.generateViewId();
                    txtView.setTag(pmHeaderList.get(i).getColumnId());
                    if (madeColSpan == 1) {
                        for (int k = 0; k< pmHeaderList.size(); k++) {
                            PmCheckHeader tmpKHeader = new PmCheckHeader();
                            tmpKHeader = pmHeaderList.get(k);
                            if (k > i) {
                                if (tmpHeader.getHdrRow1().equals(tmpKHeader.getHdrRow1()) && tmpColSpan == 1) {
                                    tmpColSpan ++;
                                } else if (tmpHeader.getHdrRow1().equals(tmpKHeader.getHdrRow1()) && tmpColSpan > 1) {
                                    tmpColSpan ++;
                                } else if (!tmpHeader.getHdrRow1().equals(tmpKHeader.getHdrRow1()) && tmpColSpan > 1) {
                                    break;
                                }
                            }
                        }
                    }
                    params.columnSpec = GridLayout.spec(i, madeColSpan);

                    if (tmpColSpan > 1 && madeColSpan == 1) {
                        madeColSpan = tmpColSpan;
                        spanTxt = tmpHeader.getHdrRow1();
                    }

                    if (madeColSpan == tmpColSpan && madeColSpan > 1) {
                        txtView.setWidth(txtView.getWidth() * madeColSpan);
                    } else if (madeColSpan > 1){
                        // txtView.setVisibility(View.GONE);
                        txtView.setWidth(0);
                        madeColSpan --;
                    } else {
                        spanTxt = "";
                    }
                    pmCheckGridLayout.addView(txtView, params);


                    // txtView.setBackgroundColor(ContextCompat.getColor(this, R.color.listview_header_bg));

                tmpView.setBackgroundColor(Color.parseColor("#FFFFFF"));
                    //                    tableRow.addView(tmpView);
                } else if (j == 1 && hasTwiceHeader > 0) {
                    TextView txtView = new TextView(this);
                    txtView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT));
                    txtView.setTextColor(Color.parseColor("#FFFFFF"));
                    txtView.setGravity(Gravity.CENTER);
                    txtView.setTextSize(14);
                    if (i == 0) {
                        txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 4 ));
                        // txtView.setBackgroundResource(R.drawable.table_left_n_right_border);
                    } else {
                        txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 8 ));
                        // txtView.setBackgroundResource(R.drawable.table_right_border);
                    }
                    txtView.setWidth((int) (pxToDp(PmCheckResultListActivity.this, pmHeaderList.get(i).getColWidth()) * 8 ));
                    // txtView.setHeight(60);
                    txtView.generateViewId();
                    txtView.setTag(pmHeaderList.get(i).getColumnId());

            } // i
        } // j
stringboot (260 포인트) 님이 2021년 6월 29일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...