问题: 当我选择一个文件有一个很长的路径或名称,它迫使邻列消失。
布xml就位 TableLayout
作为一个占位的 Activity
和代码被用来创建`TableRows和观点作为必要的。
我想要做的事: 用户可以点击"增加"按钮,选择一个文件在他们手机被添加,为通路和文件的名字 TableRow
在 TableLayout
. 第一栏有一个按钮(-),以选择删除新近加入TableRow,第二栏包含的道路和文件的名称。
我想: 我觉得我已经尝试了一切调整各种程 LayoutParams
要么 Button
或 TextView
宽度和高度的参数设定一个固定的宽度...至少按钮。 但似乎没有任何工作。 当我搜索这里用一种编程的例子,它是永远的布局XML代码,不Java。
我仍然是一种学习卓但我被困于此,并认为有人可能要点,我在正确的方向。 下面是一些图像和代码,创造了TableRows和意见。 感觉有点愚蠢我可不想出解决办法。
加之前
之后添加
代码 方法内的一个单独的类创造的 Button
和 TextView
美景 TableRow
和 TableLayout
. 第一种方法调用其他两个其创建的按钮广告控
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;
}