Проблемы с выравниванием TextView и Checkbox в макете
У меня есть линейный макет, который содержит текстовое представление и флажок.
<LinearLayout style="@style/linearLayoutStyleNoBgColor" >
<TextView
android:id="@+id/useFollowupDate"
style="@style/textFieldStyleType1WithCheckbox" />
<CheckBox
android:id="@+id/checkFollowDate"
style="@style/checkboxStyleType1"/>
</LinearLayout>
И стили:
<style name="linearLayoutStyleNoBgColor">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_margin">5dp</item>
<item name="android:weightSum">1.0</item>
</style>
<style name="textFieldStyleType1WithCheckbox" parent="@style/textFieldStyleType1">
<item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">0.30</item>
<item name="android:gravity">center_vertical</item>
</style>
<style name="checkboxStyleType1">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">0.70</item>
<item name="android:gravity">right|end</item>
</style>
Чего я пытаюсь добиться, так это
TextView | checkbox
(30%percent screen) | (to the right)
Но я получаю сейчас
TextView | checkbox
(30%percent screen) | (left aligned)
Где я ошибся?
4 ответа
Решение
Использование gravity
а также layout_gravity
свойства в нужных местах;
Это может быть полезно: http://thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/
Если вы хотите правильно выровнять их, вы можете использовать относительное расположение. сделать флажок справа от текстового представления
<CheckBox
android:id="@+id/checkFollowDate"
style="@style/checkboxStyleType1"
android:layout_toRightOf="@id/useFollowupDate"
/>
styles.xml
<style name="linearLayoutStyleNoBgColor">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:layout_margin">5dp</item>
<item name="android:weightSum">1.0</item>
</style>
<style name="textFieldStyleType1WithCheckbox">
<item name="android:layout_width">0dip</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center_vertical</item>
</style>
<style name="checkboxStyleType1">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:gravity">right|end</item>
</style>
activity_main.xml
<LinearLayout
style="@style/linearLayoutStyleNoBgColor"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/useFollowupDate"
style="@style/textFieldStyleType1WithCheckbox"
android:text="test"
android:layout_width="wrap_content" />
<CheckBox
android:id="@+id/checkFollowDate"
style="@style/checkboxStyleType1"
android:gravity="center_vertical"
android:text="checkbox" />
</LinearLayout>
Я думаю, что вы должны изменить android:gravity
в android:layout_gravity
за checkboxStyleType1