我有一个左对齐的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应该保持在按钮的左边界吗?
我试过看似我在这个网站上找到的与此问题有关的一切,但我仍然无法得到解决方案。任何帮助将不胜感激!
答案 0 :(得分:19)
这将为您解决问题:
<?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>
以下是运行时的样子:
再次使用带有更多文字的按钮: