7

左揃えの TextView と右揃えのボタンが並んでいます。ボタンが右側に必要なだけのスペースを占有し (そこに入るテキストに応じて)、左側のテキストができるだけいっぱいになり、オーバーフローが省略されるようにします。

|Long title that may or may not ellipsi... <Button with text>|

同様の問題があると思われる他の多くの投稿を読んで試しましたが、どれもうまくいきませんでした。重み付きの LinearLayout と、layout_toLeftOf が割り当てられた RelativeLayout の両方を使用してみましたが、どちらも必要なものにはなりません。

これは私の LinearLayout コード (不要な部分を取り除いたもの) で、左の TextView に layout_weight を 1 に、ボタンに layout_weight を 0 に設定しています。これにより、右側のボタンに必要なすべてのスペースが与えられ、TextView に残りが与えられます。代わりに、左のタイトルが表示されなくなり、右のボタンが横に押しつぶされて途切れます。提案されているように、テキストとボタンの両方の幅を 0dip に置き換えてみましたが、何も変わりません。

<LinearLayout
    android:layout_height="@dimen/title_bar_height"
    android:layout_width="fill_parent"
    android:orientation="horizontal">
  <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:ellipsize="end"
      android:layout_gravity="left|center_vertical"
      android:gravity="left|center_vertical"
      android:textSize="22sp"
      android:lines="1"/>
  <include layout="@layout/action_buttons"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="0"/>
</LinearLayout>

TextView の layout_weight を 0 に置き換えると、実際には右側のボタンが画面に完全に収まりますが、左側のテキストはまだ表示されません。TextView とボタンの両方の layout_weights を 0 に設定し、TextView の幅を 0dip から wrap_content に変更すると、すべてが表示されますが、代わりにボタンが押しつぶされて残りのスペースが埋められます (そして、内部のテキストは切り捨てられます)。

これがRelativeLayoutでの私の試みです:

<RelativeLayout
    android:layout_height="@dimen/title_bar_height"
    android:layout_width="wrap_content">
  <include layout="@layout/action_buttons"/>
  <TextView
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_gravity="center_vertical"
      android:layout_alignParentLeft="true"
      android:layout_toLeftOf="@layout/action_buttons"
      android:gravity="center_vertical"
      android:scaleType="center"
      android:textSize="22sp"
      android:ellipsize="end"
      android:lines="1"/>
</RelativeLayout>

左の TextView (長すぎる場合) が切り捨てられて省略されるのではなく、ボタンの上に重なって表示されることを除いて、すべてがうまく整列して表示されます。android:layout_toLeftOf"@layout/action_buttons" は、TextView がボタンの左側の境界にとどまるように指定するべきではありませんか?

この問題に関連して、このサイトで見つけられるすべてのことを試みましたが、まだ解決策が得られません。どんな助けでも大歓迎です!

4

1 に答える 1

20

これはあなたのためのトリックを行います:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_weight="1"
        android:ellipsize="end"
        android:gravity="left|center_vertical"
        android:singleLine="true"
        android:text="Some really long textttttttttt tooooooooooo make the ellipsize work in the preview"
        android:textSize="22sp" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button Text" />
</LinearLayout>

実行すると次のようになります。 短いボタン

また、テキストが追加されたボタンを使用します。 長いボタン

于 2012-05-31T04:54:18.963 に答える