1

私はこの問題を解決するために何時間も費やしてきました.

3 つの TextView を並べて配置しようとしています。含まれるテキストに関係なく、それらすべてを均等に大きくしたいのですが、テキストがそれらの1つに収まらない場合は、その特定のテキストビューの最後でテキストを「...」に置き換える必要があります(エリプサイズの助け)。

| | <>TextView>> <>TextView>> <>TextView> |

私が言ったように、私はそれらが常に同じ大きさである必要があります。これは、重みを使用して LinearLayout で「簡単に」実行できますが、ellipsize は機能しません (または、少なくとも私は機能しません)。これを機能させるには絶対幅サイズが必要なようです。

私は LinearLayouts、RelativeLayouts、TableLayouts を試してきましたが、最終的には xml レイアウトとプログラムによるアプローチの組み合わせを採用しました (これは必要以上に高度に思えますが、それが唯一の方法でした。近い)。ただし、現在は絶対幅 (プログラムで設定) を使用していますが、適切な密度乗数で乗算していますが、異なる画面では異なって見えます。4.3 インチの画面では使用できるスペースがいくらかありますが、2.7 インチの画面ではかなり見栄えがします。

レイアウトでこれを達成する方法はありますか?私はフォーラムでも少し見回してきましたが、問題は、ほとんどの人が1つのテキストビューだけに楕円サイズ機能を持たせたいということであり、それらすべてではありません...

以下に、それを機能させるための最初の試みを示しますが、楕円サイズが機能するには絶対幅が必要だと思うため、機能しません。たとえば、幅を「1dp」に設定しても、実際にはうまくいきません。

どんな提案でも大歓迎です!

    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_marginTop="10dip"

    >
         <TextView
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:editable="true"
          android:ellipsize="end"
          android:singleLine="true"
          >
          </TextView>

      <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:editable="true"
        android:singleLine="true"
        android:ellipsize="end"
         >
       </TextView>

      <TextView
          android:layout_width="0dp"
          android:layout_height="wrap_content"
          android:layout_weight="1"
          android:gravity="right"
          android:editable="true"       
          android:ellipsize="end"
          android:singleLine="true"       
        >
      </TextView>   
      </LinearLayout>
4

1 に答える 1

0

パーツを外すとうまくいきましたandroid:editable="true"

それをユーザーが編集可能なフィールドにしたい場合は、EditText代わりに使用してください。ただし、その 1 つ (afaik) は楕円サイズをサポートしていません。

于 2012-08-14T17:15:10.660 に答える