如何在动态添加的TableLayout中控制EditText滚动

时间:2015-08-31 11:04:47

标签: android android-edittext android-tablelayout

我正在以编程方式将TableLayout添加到Android中的父LinearLayout。该表有一行有两列;一个EditText和一个Button。我还指定可以拉伸EditText来填充宽度,而Button的大小保持不变(类似于输入附加组件)。一切都很好,直到我填充一个长文本作为EditText的值,这似乎使它拉伸,以便可以显示整个值(而不是椭圆化)。这当然意味着按钮被推离右边缘,使其无法使用。

添加的动态布局:

<?xml version="1.0" encoding="UTF-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="0">
   <TableRow>
        <EditText
            android:id="@+id/added_text"
            android:padding="8dp"
            android:layout_width="wrap_content"
            android:layout_height="64dp"
            android:layout_marginLeft="8dp"
            android:layout_gravity="center_vertical"
            android:text=""
            androin:scrollHorizontally="true"
            android:ellipsize="end"
            android:enabled="false"/>
        <ImageButton
            android:id="@+id/added_button"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_margin="8dp"
            android:layout_gravity="center_vertical"                
            android:src="@drawable/minus"/>     
    </TableRow>
</TableLayout>

填充EditText并添加表格的代码:

LinearLayout parent = (LinearLayout) findViewById(R.id.parent); // LinearLayout
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View dynamic = li.inflate(R.layout.dynamic, null);
EditText et = (EditText) dynamic.findViewById(R.id.added_text);
et.setText("Some very long text...");
parent.addView(dynamic, 1);

我想要的是简单的;只是为了优化EditText值,以便添加的视图符合父宽度。

1 个答案:

答案 0 :(得分:0)

看起来在上面的EditText中添加以下内容就解决了它。

android:layout_weight="1"

实际上在这里找到它:

Android: Stop EditText from going outside of tablerow