TextView与ellipsize和按钮

时间:2011-11-19 23:32:13

标签: android alignment tableview

我尝试使用左右按钮创建标题,并在中间创建一个标题,按钮右侧有一个按钮(允许选择内容)。布局应该是:

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

如果标题很长,它应该是椭圆形的。为此,看起来textview需要layout_weight,如this solution中所示,否则它会将正确的按钮从屏幕上移开。但是,为textview设置layout_weight会将中心按钮向右推:

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

现在的布局是:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >

    <Button
        android:text="Hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <TextView
        android:text="Testing"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:singleLine="true"
        android:layout_weight="1"
        android:gravity="center"
        android:ellipsize="end"
        android:inputType="text"
        />

    <Button
        android:text="Hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <Button
        android:text="Hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

[编辑]尝试FunkTheMonk的方法并不是很有效,因为如果字符串很长,最终会将中心按钮从布局中推出:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >

    <Button
        android:text="Hello1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
            android:gravity="center"
            android:layout_weight="1"
        >
        <TextView
            android:text="Testing a very long text to see how it works how do you like me now this is still longer yet"
            android:layout_margin="3dp"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:singleLine="true"
            android:gravity="center"
            android:ellipsize="end"
            android:inputType="text"
            />

        <Button
            android:text="Hello2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </LinearLayout>

    <Button
        android:text="Hello3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

我不是100%肯定你的意思。但我想我明白了。一个简单的方法是使用tablerow和android:layout_marginLeft&amp;右。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TableRow android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"
            android:layout_gravity="left|top"></Button>

        <TextView android:inputType="text" android:gravity="center"
            android:ellipsize="end" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="Testing"
            android:singleLine="true"
            android:layout_marginLeft="57dp"></TextView>
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_gravity="center"
            android:text="Hello"
            android:layout_marginRight="57dp"></Button>


        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"
            android:layout_gravity="right|top"></Button>
    </TableRow>

</LinearLayout>

答案 1 :(得分:0)

在自己的水平线性布局中添加TextView和Button,并在其上设置权重。将此新线性布局的重力设置为中心,文本视图和按钮将在两个外部按钮之间的可用空间中居中。

如果标题很长,文本视图将占用尽可能多的空间,然后才能在线性布局中占据空间。