0

TableLayout の行の高さに問題があります。
もしも

android:stretchColumns="1"

結果は
ここに画像の説明を入力
、カットされた最後の行のテキストを見ることができます

stretchColumns結果を指定しない場合:
ここに画像の説明を入力
現在表示されているテキストですが、テーブル (黒) はコンテンツなしで非常に大きくなります。

コードは次のとおりです。

<TableLayout
       android:id="@+id/my_table"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:stretchColumns="*"
       android:layout_marginLeft="15dp"
       android:layout_marginRight="15dp"/>


<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_table_row"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:minHeight="30dp"
    android:weightSum="6" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.4"
        android:gravity="center" >

        <ImageView
            android:id="@+id/column_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/app_name" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3.9"
        android:gravity="center_vertical|left" >   

        <TextView
            android:id="@+id/column_two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp" >
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1.7"
        android:gravity="center_vertical|right" >

        <TextView
            android:id="@+id/column_three"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="marquee"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            android:singleLine="true"
            android:textSize="18sp" />
    </LinearLayout>

</TableRow>

行にデータを入力し、プログラムでテーブルに追加しています。

なぜこうなった?

4

1 に答える 1

2

私はこのタイプのソリューションが嫌いですが、まあ... TableLayoutの代わりにLinearLayout(TableとRowの両方)に切り替えましたが、問題は同じでした。違いは、LinearLayout では「空の行」を 1 つ追加するだけで目標を達成できることです。TableLayout と Rows で同じアプローチを試みましたが、うまくいきませんでした。

@フランシスコ・コラレス・モラレス

myLinearLayoutTable.addView((LinearLayout) inflater.inflate(R.layout.my_row, myLinearLayoutTable, false));
于 2013-04-30T14:11:19.267 に答える