如何让ImageView和TextView具有相同的高度?

8

我的布局中包含了ImageView(iv)和TextView(tv)。 我希望让这个tv在iv的右侧。 而且,这个tv的高度应该与iv相同。 将这个tv的gravity设置为CENTER_VERTICAL。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"/>


    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/iv"
        android:text="TextView" android:gravity="center_vertical"/>

</RelativeLayout>

如何达到目标?

1
你可以使用LinearLayout代替RelativeLayout,然后你可以为ImageView和TextView都使用layout_weight参数设置为1。 - Alok Kulkarni
怎样才能使两个部件的高度相同?TextView 的高度取决于文字大小。我们只能让它们并排,但不能保证他们的高度相同。 - Yugandhar Babu
4个回答

25

嗨,试试这个......

  <?xml version="1.0" encoding="utf-8"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/RelativeLayout1"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >

  <ImageView
    android:id="@+id/iv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ic_title_home_demo" />

  <TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/iv"
    android:layout_alignTop="@+id/iv"
    android:layout_toRightOf="@+id/iv"
    android:gravity="center_vertical"
    android:text="TextView" />

   </RelativeLayout>

4

您需要将textview属性设置为android:layout_alignTop="@id/iv"android:layout_alignBottom="@id/iv"


1

为了正确地使其垂直居中,您需要从TextView标记中删除android:layout_alignParentTop="true"行。

然而,听起来你可能正试图使文本改变其大小以适应ImageView的整个高度。显然,这并不能解决问题,但我不建议一开始就这样做,因为它可能会导致一些奇怪的视图。


1
您可以使用不同的尺寸,通过使用

android:layout_width="wrap_content"

和/或

android:height="300dp"

(高度同理)。还要检查边距和填充。
如果您需要更具动态性,您可以考虑使用android:layout_weight,例如让两个按钮具有相等的宽度并填充父视图的水平空间,您可以设置:

android:layout_height="wrap_content"

android_layout:weight="0.5".

您可以参考以下链接:如何使两个不同的布局具有相同的高度?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接