RelativeLayout和TextView没有工作重力

时间:2014-06-11 10:49:48

标签: android android-layout textview android-relativelayout

我有一个简单的列表项布局来显示图像和标题。

<RelativeLayout            
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/image"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/image" />

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/image"
            android:layout_alignBottom="@+id/image"
            android:layout_toRightOf="@+id/image"
            android:gravity="center_vertical"
            android:text="Title" />
</RelativeLayout>

我的问题是文字引力应该是"center-vertical"。当我在开发人员设置中显示视图边界时,我可以看到TextView大小比文本本身大,但重力仍然在顶部。问题出现在我的Android KitKat设备上,但不会出现在Android Froyo上。

4 个答案:

答案 0 :(得分:2)

这是一个known issue已经修复过,它并没有影响Marshmallow(虽然我还没有尝试过Lollipop)。 (不那么优雅)解决方案是将TextView包裹在FrameLayout

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">

  <ImageView
    android:id="@+id/image"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/image" />

  <FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@id/image"
    android:layout_alignBottom="@id/image"
    android:layout_toRightOf="@id/image"
    android:layout_centerInParent="true">

    <TextView
      android:id="@+id/title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:text="Title" />

  </FrameLayout>

</RelativeLayout>

答案 1 :(得分:0)

android:gravity="center_vertical"更改为android:layout_centerInParent="true"

只需使用此布局,即可使用

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/image"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/image" />

            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_toRightOf="@+id/image"
                android:layout_centerInParent="true"
                android:text="Title" />
</RelativeLayout>

答案 2 :(得分:0)

// Try this way,hope this will help you to solve your problem.

<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:gravity="center_vertical">

   <ImageView
    android:id="@+id/image"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:src="@drawable/ic_launcher" />

   <TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Title" />

</LinearLayout>

答案 3 :(得分:0)

检查此布局代码和

image

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"           
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/image"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/ic_launcher" />

            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:layout_toRightOf="@+id/image"
                android:layout_centerInParent="true"
                android:text="@string/hello_world" />
            </RelativeLayout>