layout_gravity无法正常工作

时间:2012-08-29 19:08:57

标签: android layout layout-gravity

为什么我的TextView不对?

更新:好吧,现在我不需要将TextView设置为右侧。现在非常有趣的是layout_gravity无法正常工作,即 - 将View设置为父容器内的位置。

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:minHeight="?android:attr/listPreferredItemHeight"
              style="@style/activated_item"
              android:orientation="horizontal">

    <CheckBox
        android:id="@+id/star"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="8dp"
        style="?android:attr/starStyle"/>

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_marginLeft="8dp"
        android:layout_gravity="right" //////// HERE I AM 
        android:textStyle="bold"
        android:textColor="@color/item_text_color"/>

</LinearLayout>

5 个答案:

答案 0 :(得分:16)

尝试使用gravity代替layout_gravity

答案 1 :(得分:3)

因为您将orientation设置为水平,这意味着您无法手动更改子视图的水平位置。

答案 2 :(得分:1)

我找到了两个解决方案:

  1. 设置android:orientation="vertical"
  2. 使用FrameLayout代替LinearLayout作为text / checkbox小部件的父级。它不是FrameLayout的主要用途,但在Android文档中也提到了这些建议:
      

    ...但是,您可以为a添加多个孩子   FrameLayout并控制它们在FrameLayout中的位置   使用android:layout_gravity为每个孩子分配重力   属性。

答案 3 :(得分:0)

试试这个......

    <?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:minHeight="?android:attr/listPreferredItemHeight"
          style="@style/activated_item"
          android:orientation="horizontal">

<CheckBox
    android:id="@+id/star"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft="8dp"
    style="?android:attr/starStyle"/>

<TextView
    android:id="@+id/title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:layout_marginLeft="40dp"
    android:gravity="right" //////// HERE I AM 
    android:textStyle="bold"
    android:textColor="@color/item_text_color"/>

答案 4 :(得分:0)

你可以使用体重也试试这个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal" >

<CheckBox
    android:id="@+id/star"
    style="?android:attr/starStyle"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft="8dp"
    android:layout_weight="1" />

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginLeft="8dp"
    android:text="TEST"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textStyle="bold" />

</LinearLayout>

重力只是使文本居中,使其正确的是重量