【发布时间】:2016-06-30 09:24:24
【问题描述】:
我在 .xml 文件中定义了一个表,但必须动态添加行和标题。我在水平和垂直方向上使用表格行填充宽度有问题。我已经尝试过stretchColumns 参数,但它没有帮助。最好的方法是什么?
table = (TableLayout) findViewById(R.id.testList);
TableRow headerRow = new TableRow(this);
JSONObject obj;
obj = new JSONObject(loadJSONFromAsset());
JSONArray records = obj.getJSONArray("tests");
ArrayList<String> headers = new ArrayList<>();
headers.add("Header 1");
headers.add("Header 2");
headers.add("Header 3");
headers.add("Header 4");
headers.add("Header 5");
for(int i = 0; i < headers.size(); i++) {
TextView header = new TextView(this);
header.setText(headers.get(i));
header.setTextColor(Color.WHITE);
header.setBackgroundColor(Color.rgb(24, 116, 205));
header.setPadding(15, 15, 15, 15);
header.setTextSize(20);
header.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
header.setMaxLines(1);
headerRow.addView(header);
}
table.addView(headerRow);
和xml
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<HorizontalScrollView
android:layout_height="wrap_content"
android:layout_width="match_parent">
<TableLayout
android:id="@+id/testList"
android:layout_height="match_parent"
android:layout_width="wrap_content">
</TableLayout>
</HorizontalScrollView>
</ScrollView>
</LinearLayout>
</GridLayout>
【问题讨论】:
-
因为你的表格在滚动视图里面,它没有宽度和高度的限制。所以没有办法确定,哪个是max宽度。只能手动设置
-
@VladMatvienko 那么如何在没有滚动视图的情况下做到这一点?
-
我没有说你需要在没有scrollView的情况下这样做。您需要决定哪个宽度是 max 适合您。是某个精确值,例如 100dp,还是屏幕宽度,还是什么?
-
@VladMatvienko 好的,但是如果我想填充所有屏幕宽度并且我有不同分辨率的设备怎么办?
-
运行时可以获取屏幕宽度,运行时也可以设置视图宽度
标签: java android xml android-tablelayout tablerow