0

我坚持以下几点:

尝试在表格的每一行的 ToggleButton 左侧放置一个左对齐的多行 EditText。

布局 XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right|center_vertical" >

        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00000000"
            android:ems="10"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:inputType="none"
            android:text="A very long line that should be wrapped into two or more lines as it doesn't fit on one line" />

        <ToggleButton
            android:id="@+id/toggleButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ToggleButton" />

    </TableRow>

</TableLayout>

</LinearLayout>

这正是我正在寻找的东西(例如:http ://s8.postimg.org/6ldgsovr9/before.png )。

但后来我尝试用这段代码添加一个新行:

    TableLayout tl = (TableLayout)findViewById(R.id.tableLayout1);

    TableRow row = new TableRow(this);
    row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
    row.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);

    EditText et = new EditText(this);
    et.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));

    TableRow.LayoutParams params = (TableRow.LayoutParams) et.getLayoutParams();
    params.height = TableRow.LayoutParams.WRAP_CONTENT;
    et.setLayoutParams(params);

    et.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
    et.setBackgroundColor(Color.TRANSPARENT);
    et.setText("A very long line that should be wrapped into two ore more lines as it doesn't fit on one line");

    row.addView(et);

    ToggleButton tb = new ToggleButton (this);
    row.addView(tb);

    tl.addView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));

这弄乱了现有的行,而新的行根本不换行(例如:http ://s24.postimg.org/3ty1ne71x/after.png )

我在这里想念什么?

谢谢!

4

4 回答 4

1

我面临类似的问题......虽然它的回复晚了,只是发布,所以它可能会帮助别人......

我通过将这些属性添加到 TableLayout 解决了问题

android:stretchColumns="0" 
android:shrinkColumns="0"

并为 EditText 设置 inputType

android:inputType="textMultiLine"
于 2014-10-21T15:12:18.910 回答
0

看起来以下行解决了显示问题:

et.setEms(10);

我不知道为什么这会有所不同(字体大小保持不变)但现在文本已正确对齐。

于 2013-05-21T13:19:14.317 回答
0

尝试评论以下行。//et.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);

于 2013-05-21T01:17:59.747 回答
0

希望我能帮助你:D

如果你想在 XML 上设置 Multline。在 TextView 标签之间添加:

android:maxLines="4"
android:lines="4"

如果你想在运行时设置它。用这个。

mTextView.setMaxLines(maxlines)
mTextView.setLines(lines)
于 2013-05-21T01:35:19.720 回答