我试图使我的TextViews椭圆化(它们位于TableRow内的LinearLayout中),但是,除非我手动设置maxEms(我不想这样做),否则它们不能正确地进行椭圆化。注意:整个xml(除了TableLayout)是以编程方式生成的。
我尝试了大多数修复:使用布局参数搞砸(有点),将setMaxLines更改为setSingleLine,以及其他修复,但如果答案正在盯着我,我仍然会道歉!
生成代码:
TableLayout tableLayout = (TableLayout) view.findViewById(R.id.table);
// Add text
for (int iter=0;iter<DisplayJson.summaryData.tasks.length;iter++) {
TableRow tableRow = new TableRow(this);
tableRow.setPadding(16,16,16,16);
LinearLayout container = new LinearLayout(this);
container.setOrientation(LinearLayout.VERTICAL);
TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT);
TableRow.LayoutParams layoutLayoutParams = new TableRow.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT,
1.0f);
TextView titleView = new TextView(this);
titleView.setText(DisplayJson.summaryData.tasks[iter].get("title"));
titleView.setEllipsize(TextUtils.TruncateAt.END);
titleView.setMaxLines(1);
//titleView.setMaxEms(22); I do NOT want to set this (but setting it DOES work as expected)
titleView.setLayoutParams(layoutParams);
TextView classView = new TextView(this);
classView.setText(DisplayJson.summaryData.tasks[iter].get("class"));
classView.setLayoutParams(layoutParams);
container.addView(titleView);
container.addView(classView);
container.setLayoutParams(layoutLayoutParams);
tableRow.addView(container);
setOnClick(tableRow, iter); //Custom function which does not affect the problem
tableRow.setLayoutParams(rowParams);
tableLayout.addView(tableRow);
}
setContentView(view);
TableLayout xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:shrinkColumns="1"></TableLayout>
我应该注意,在添加LinearLayout和&#39; classView&#39;之前在TextView中,椭圆化工作正常(代码可能略有不同)。此外,只有titleView TextView需要进行椭圆化,而不应该使用classView。
我们将非常感谢任何帮助,我应该注意,这些代码都不是这样的,只要它具有相同的输出就可以更改。
答案 0 :(得分:1)
如果您在Android Studio中查看布局检查器的输出,您会看到titleView
正在吹出表格行的宽度。更改线性布局的布局参数,使其具有如下权重,您将看到省略号显示:
TableRow.LayoutParams layoutLayoutParams = new TableRow.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT,
1.0f);
我希望这会有所帮助。