我怎么调整TableRow小宽度内TableLayout programmaticallly?

0

的问题

问题: 当我选择一个文件有一个很长的路径或名称,它迫使邻列消失。

布xml就位 TableLayout 作为一个占位的 Activity 和代码被用来创建`TableRows和观点作为必要的。

我想要做的事: 用户可以点击"增加"按钮,选择一个文件在他们手机被添加,为通路和文件的名字 TableRowTableLayout. 第一栏有一个按钮(-),以选择删除新近加入TableRow,第二栏包含的道路和文件的名称。

我想: 我觉得我已经尝试了一切调整各种程 LayoutParams 要么 ButtonTextView 宽度和高度的参数设定一个固定的宽度...至少按钮。 但似乎没有任何工作。 当我搜索这里用一种编程的例子,它是永远的布局XML代码,不Java。

我仍然是一种学习卓但我被困于此,并认为有人可能要点,我在正确的方向。 下面是一些图像和代码,创造了TableRows和意见。 感觉有点愚蠢我可不想出解决办法。

加之前

before adding

之后添加

after adding

代码 方法内的一个单独的类创造的 ButtonTextView 美景 TableRowTableLayout. 第一种方法调用其他两个其创建的按钮广告控

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

之后我了解到使用"动态"而不是"方案",我能够找到一些帮助,结果,解决我的问题。 下面的链路提供了依据我推断出了解决我的问题。 下面的链接是我的解决方案在回答这个问题。

灵感来源: http://mangoprojects.info/android-2/creating-a-tablelayout-dynamically-in-android/

解决方案: 我不要申请 LayoutParams 在《宣言》的 TableRow. 一旦我加入这些参数,我可以使用 TableRow.LayoutParams 以帮助确定和控制各个 ButtonTextViews 使用 .weight.height 参数,在我的特别情况。 看到更新的代码和图片的结果。

视觉效果的代码的更新

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ý
..................................................................................................................