スクロールビューの唯一の子として、2つの列TableLayout
があります。最初の列にはTextViews
( 'labels')が含まれ、2番目の列にはEditText
/Spinner
/DateWidget
etc( 'values')が含まれます。 TableLayout
、TableRow
およびすべてのウィジェット( 'values'列)にAndroid:layout_width="fill_parent"
を指定しましたが。
アクティビティが作成されると、画面は完璧に見えます。ただし、EditText
に非常に長い値を入力すると、「値」列が表示画面領域を超えます。
これにどのように取り組むのですか?
重みを使用して列のサイズを定義することもできます。したがって、テーブルレイアウトの高さを定義して親を埋めますが、列ごとに幅を「0px」に設定し、重みを列に広げる割合に設定する必要があります。したがって、最初の列を画面幅の30%にしたい場合、その重みを「0.3」に設定し、2番目の列を「0.7」に設定します。
それを試して、それが機能するかどうかを確認してください。
これを解決する実用的な方法は、stretchColumns
でshrinkColumns
およびTableLayout
属性を使用することです。それらの値は、列の0ベースのインデックスでなければなりません。
たとえば、2列のテーブルレイアウトがあり、次の場合:
TableLayout
が大画面デバイスの親ビュー全体に収まるように、2番目の列を空のスペース(ストレッチ)で埋めたいTableLayout
を次のように定義します。
<TableLayout
Android:id="@+id/my_table_layout"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:stretchColumns="1"
Android:shrinkColumns="0" >
</TableLayout>
これは私のために働いた..
tableLayout.setColumnShrinkable(1,true);
<TableLayout
Android:layout_height="fill_parent"
Android:layout_width="fill_parent"
Android:layout_marginLeft="5dp"
Android:layout_marginRight="5dp">
<TableRow
Android:layout_height="fill_parent"
Android:layout_width="fill_parent">
<TextView
Android:layout_width="wrap_content"
Android:text="Name "
Android:layout_height="fill_parent">
</TextView>
<EditText
Android:layout_width="0dp"
Android:layout_weight="1"
Android:hint="name"
Android:layout_height="wrap_content"
>
</EditText>
</TableRow>
</TableLayout>
このコードは、最初の列にテキストビューを配置し、テキスト入力の親を編集するのに役立ちました。
Android 2.2。私の場合、Android:maxWidth = "0sp"プロパティの追加が助けになりました。EditTextフィールドが思い通りに表示されます。他のEditTextフィールドと同様ですが、さらに長いテキストが入力されたときにサイズ変更されません。
EditTextの定義は次のとおりです。
<EditText Android:id="@+id/extra_edit"
Android:padding="3dip"
Android:inputType="textImeMultiLine"
Android:maxWidth="0sp"
Android:layout_width="fill_parent"
/>
これを試して、Android:singleLine="false"
およびAndroid:inputType="textMultiLine"
:
<TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent" Android:layout_height="fill_parent"
Android:stretchColumns="1">
<TableRow Android:layout_height="wrap_content"
Android:layout_width="fill_parent">
<TextView Android:text="Label:" />
<EditText Android:id="@+id/entry" Android:inputType="textMultiLine"
Android:layout_width="wrap_content" Android:layout_height="wrap_content"
Android:singleLine="false" />
</TableRow>
</TableLayout>