TextView с многоточием и кнопками - PullRequest
1 голос
/ 20 ноября 2011

Я пытаюсь создать заголовок с левой и правой кнопками, а также заголовок в центре, с кнопкой, расположенной сразу справа от кнопки (которая позволит выбрать что-то). Макет должен быть таким:

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

Если заголовок очень длинный, он должен иметь размер эллипса. Для этого кажется, что для textview нужен layout_weight, как видно из этого решения , в противном случае он отталкивает правые кнопки от экрана. Однако установка layout_weight для textview отталкивает центральную кнопку вправо:

|<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 голосов
/ 20 ноября 2011

Добавьте TextView и Button в их собственную горизонтальную линейную разметку и установите вес для них.Установите гравитацию этого нового линейного макета в центр, и текстовое представление и кнопка будут центрированы в доступном пространстве между двумя внешними кнопками.

Если заголовок длинный, текстовое представление займет столько же места, сколько иможет внутри линейного макета перед затмением.

0 голосов
/ 20 ноября 2011

Я не на 100% уверен, что вы имеете в виду.Но я думаю, что понял.Один из простых способов сделать это - использовать планшет и Android: layout_marginLeft & right.

 <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...