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 提供其余的空间,但相反,左边的标题停止出现,右边的按钮被弄脏到一边并被切断。正如我所看到的那样,我已经尝试将 Text 和 button 的宽度都替换为 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 回答