나는 어떻게 조정 TableRow 셀 폭 내 TableLayout programmaticallly?

0

질문

문제가: 가 선택한 파일의 경로가 긴나 이름,그것은 인접 열을 사라집니다.

레이아웃 xml 만 위치 TableLayout 로 자리 표시자 Activity 자바 코드를 만드는 데 사용되는`TableRows 및망으로 필요합니다.

내가 무엇을 하려고: 사용자 클릭하면"추가"버튼을 선택한 파일에서 자신의 휴대 전화로 추가되는 경로와 파일이름을 TableRowTableLayout. 첫 번째 열에는(-)버튼을 선택적으로 제거하는 새로 추가되 TableRow 고,두 번째 열에 경로와 파일 이름입니다.

내가 무엇을 시도했다: 나는 느낌이 나는 모든 것을 시도한 프로그래밍 방식으로 조정하는 다양한 LayoutParamsButtonTextView 폭과 높이를 매개 변수를 설정하는 고정 폭...적어도 합니다. 하지만 아무것도 작동하는 것 같다. 을 때 저는 여기에서 검색을 위한 프로그래밍를 들어,그것은 항상 레이아웃 XML 코드,지 Java.

난 아직 종류의 배우 안드로이드 하지만 난에서 이 사람이 할 수 있는 점에서 저를 오른쪽 방향입니다. 아래는 일부 이미지는 코드를 만듭니다 TableRows 및 전망이다. 을 느낄 종류의 바보할 수 있습니다.

를 추가하기 전에

before adding

후에 추가

after adding

코드는 방법을 내는 단일 클래스를 만드는 ButtonTextViewTableRowTableLayout. 첫 번째 메소드를 호출하여 다른 두을 만드는 광고 버튼 뷰

public static TableRow setupFilesTableRow(Context context, TableLayout table, String fileID, String fileName, boolean header) {
        TableRow row = new TableRow(context);
        if(header) {
            row.addView(setupFilesAddRowButton(context, table));
            row.addView(addRowTextViewToTable(context, fileName, true));
        }else{
            row.addView(setupDeleteRowButton(context, table));

            for(int r=1; r < 2; r++){
                
                row.addView(addRowTextViewToTable(context, fileName, false));
                row.setClickable(true);
            }
        }
        return row;
    }

public static Button setupDeleteRowButton(Context context, TableLayout table){
        Button btnDelete = new Button(context);
        TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.MATCH_PARENT);
        trLayoutParams.setMargins(3,3,3,3);
        btnDelete.setBackgroundColor(Color.WHITE);
        btnDelete.setLayoutParams(trLayoutParams);
        btnDelete.setText("-");
        btnDelete.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
        btnDelete.setGravity(Gravity.CENTER);
        btnDelete.setPadding(5,5,5,5);
        btnDelete.setOnClickListener(v -> {
            deleteTableRows(table);
        });
        return btnDelete;
    }

public static TextView addRowTextViewToTable(Context context, String value, boolean bold){

        TextView tv;
        tv = new TextView(context);
        TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams();

        trLayoutParams.setMargins(3,3,3,3);
        tv.setText(String.valueOf(value));
        if(bold) tv.setTypeface(null, Typeface.BOLD);
        tv.setLayoutParams(trLayoutParams);
        tv.setTextSize(12);
        tv.setGravity(Gravity.CENTER);
        tv.setPadding(8,8,8,8);
        tv.setBackgroundColor(Color.WHITE);

        return tv;
    }
android android-tablelayout tablerow
2021-11-17 20:22:02
1

최고의 응답

0

후 나는 배운 사용하는 용어"dynamic"대신에"프로그래밍"수 있었을 찾아 도움이고 결과적으로 해결되었고 내 문제입니다. 다음과 같은 링크를 제공 기준에 대한 내추는 솔루션을 내 문제입니다. 아래 링크를 제 솔루션에 이 질문에 대답.

서 영감을 출처: http://mangoprojects.info/android-2/creating-a-tablelayout-dynamically-in-android/

솔루션: 내가 실패를 적용 LayoutParams 에서의 선언 TableRow. 저는 이러한 매개 변수를 사용할 수 있었다. TableRow.LayoutParams 을 정의하는 데 유용한 정보와 제어는 개별 ButtonTextViews.weight.height 매개 변수 내에서 특정한 경우입니다. 조 업데이트 코드와 그림의 결과입니다.

Visual 결과의 코드를 업데이트

Result

코드 업데이트 setupFilesTableRow

    TableRow row = new TableRow(context);
    LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
    row.setLayoutParams(ll);

코드 업데이트 setupDeleteRowButton (추가 체중과 신장을 도왔)

    Button btnDelete = new Button(context);
    TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT);
    trLayoutParams.setMargins(3,3,3,3);
    trLayoutParams.weight = 1;
    trLayoutParams.height =75;
    btnDelete.setLayoutParams(trLayoutParams);

코드 업데이트 addRowTextViewToTable*

    TextView tv;
    tv = new TextView(context);
    TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);
    trLayoutParams.setMargins(3,3,3,3);
    trLayoutParams.weight = 5;
    tv.setLayoutParams(trLayoutParams);
2021-11-18 20:41:45

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................