34

TableLayoutスクロールビューの唯一の子として2つの列があります。最初の列にはTextViews('labels')が含まれ、2番目の列には// EditTextetc ('values')が含まれSpinnerます。、およびすべてのウィジェット(「値」列)DateWidgetを指定android:layout_width="fill_parent"しましたが。TableLayoutTableRow

アクティビティが作成されると、画面は完璧に見えます。ただし、に非常に長い値を入力するEditTextと、「値」列は表示されている画面領域を超えます。

どうすればこれに取り組むことができますか?

4

6 に答える 6

59

重みを使用して列のサイズを定義することもできます。したがって、親を埋めるためにテーブルレイアウトの高さを定義しますが、各列について、幅を「0px」に設定し、重みを列にまたがるパーセンテージに設定する必要があります。したがって、最初の列を画面幅の30%にする場合は、重みを「0.3」に設定し、2番目の列を「0.7」に設定します。

それを試して、それが機能するかどうかを確認してください。

于 2010-10-30T14:02:23.807 に答える
29

これを解決する実用的な方法は、の属性stretchColumnsshrinkColumns属性を使用すること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>
于 2013-11-13T16:17:38.580 に答える
7

これは私のために働いた。

tableLayout.setColumnShrinkable(1,true);
于 2011-12-29T18:48:30.973 に答える
6
<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>

このコードは、テキストビューを最初の列に揃え、テキスト塗りつぶしの親を編集するために機能しました。

于 2012-03-28T11:10:13.267 に答える
0

これを試して、確認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>
于 2010-10-30T14:21:01.560 に答える
0

Android2.2のEditTextでも同様の問題が発生しました。私の場合、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"
       />
于 2010-11-04T12:59:03.100 に答える