2013-07-12 2 views
3

Я хочу поместить TextView слева и элемент управления (например, CheckBox) справа от TextView. Я хочу, чтобы элемент управления был выровнен по левому краю на экране. Это не сложно получить через LinearLayout или RelativeLayout. Например, я сделал это с LinearLayout:TextView нажав правые элементы управления на экране

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TextView 
     android:id="@+id/todo_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="@android:style/TextAppearance.Small" 
     android:maxLines="2" 
     android:textStyle="bold" /> 
    <View 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" /> 
    <CheckBox 
     android:id="@+id/todo_checkbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:enabled="false" 
     android:focusable="false"/> 
</LinearLayout> 

Проблема заключается в том, что, когда текст в TextView слишком длинный, оно толкает флажок из экрана и флажок больше не виден. Вместо этого я хочу, чтобы флажок был установлен в правом конце экрана, и TextView в конечном итоге разделился на две строки, если это необходимо. Как я могу это достичь?

+0

Вы пробовали играть с 'layout_weight' и' weightsum'? – chancea

ответ

7

android:layout_weight="1" для текста и флажка всегда будут на правой стороне. Проверьте это: Android Layout Weight

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TextView 
     android:id="@+id/todo_title" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:textAppearance="@android:style/TextAppearance.Small" 
     android:maxLines="2" 
     android:layout_weight="1" 
     android:textStyle="bold" /> 
    <CheckBox 
     android:id="@+id/todo_checkbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:enabled="false" 
     android:focusable="false"/> 
</LinearLayout> 
0

Используйте weightsum и layout_weight.

Weightsum - это значение, данное родителям, говоря, что все компоненты для детей должны складываться с суммой.

Макет-вес предоставлен детям этого макета. Значение соответствует размеру макета, который будет занимать компонент.

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightsum = "100" > 
    <TextView 
     android:id="@+id/todo_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="@android:style/TextAppearance.Small" 
     android:maxLines="2" 
     android:layout_weight="30" 
     android:textStyle="bold" /> 
    <CheckBox 
     android:id="@+id/todo_checkbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:enabled="false" 
     android:layout_weight="70" 
     android:focusable="false"/> 

</LinearLayout> 

Имейте в виду, что значения поменялись местами (не знаю, как это работает), но наибольшее значение layout_weight занимает наименьшую площадь.

+0

не работает для меня. CheckBox показывается только частично. – user1781028

+0

Играйте со значениями layout_weight. Получает ли тот же результат для всех значений? – Alexey