我想制作列表行布局。此布局最左侧是图像视图,图像视图旁边是文本视图,最右侧是图像视图。我希望所有这些都是垂直中心。
<RelativeLayout
android:layout_width="fill_parent" android:layout_height="100dp"
android:gravity="center_vertical"
>
<ImageView
android:id="@+id/icon"
android:layout_width="50dp" android:layout_height="50dp"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
android:layout_width="wrap_content" android:layout_height="100dp"
android:layout_gravity="center_vertical" />
<ImageView
android:layout_width="50dp" android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"
android:src="@drawable/arrow" />
</RelativeLayout>
我还尝试将android:layout_centerVertical="true"
添加到textview,但结果是textview对齐底部和两个imageview。
我在android 4.2模拟器中试过这个。
有人可以帮我解决这个问题吗?
答案 0 :(得分:173)
使用
android:layout_centerVertical="true"
答案 1 :(得分:75)
我已经编辑了你的布局。现在检查此代码。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#33B5E5"
android:padding="5dp" >
<ImageView
android:id="@+id/icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:background="@android:drawable/ic_lock_lock" />
<TextView
android:id="@+id/func_text"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_gravity="center_vertical"
android:layout_toRightOf="@+id/icon"
android:gravity="center"
android:padding="5dp"
android:text="This is my test string............"
android:textColor="#FFFFFF" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical"
android:src="@android:drawable/ic_media_next" />
</RelativeLayout>
答案 2 :(得分:17)
如果View的高度/宽度= wrap_content
使用:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
如果View的高度/宽度= match_parent
使用:
android:gravity="center_vertical|center_horizontal"
答案 3 :(得分:7)
尝试将文字视图的顶部和底部对齐到其中一个图标,这会使文字视图与其共享相同的高度,然后将gravity
设置为center_vertical
以使文本视图中的文字垂直居中
<TextView
android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
android:layout_alignTop="@id/icon" android:layout_alignBottom="@id/icon"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" />
答案 4 :(得分:7)
对我来说,我不得不删除
<item name="android:gravity">center_vertical</item>
来自 RelativeLayout ,因此子项的配置可以正常运行:
<item name="android:layout_centerVertical">true</item>
答案 5 :(得分:3)
这对我有用。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rell_main_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#096d74" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/img_logo_large"
android:contentDescription="@null" />
</RelativeLayout>
答案 6 :(得分:1)
这可能是因为textview太高了。将textview的layout :height更改为wrap_content或使用
android:gravity="center_vertical"
答案 7 :(得分:0)
同时添加android:layout_centerInParent
和android:layout_centerVertical
对我来说是ImageView
纵向和横向的中心:
<ImageView
..
android:layout_centerInParent="true"
android:layout_centerVertical="true"
/>
答案 8 :(得分:0)
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical"
android:layout_marginTop="@dimen/main_spacing_extra_big"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/noto_kufi_regular"
android:text="@string/renew_license_municipality"
android:textColor="@color/sixth_text"
android:textSize="@dimen/main_text" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/noto_kufi_regular"
android:text="@{RenewLicenseBasicInfoFragmentVM.tvMunicipality}"
android:textColor="@color/sixth_text"
android:textSize="@dimen/main_text" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical"
android:layout_marginTop="@dimen/main_spacing_extra_big"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:fontFamily="@font/noto_kufi_regular"
android:text="@string/renew_license_license_number"
android:textColor="@color/sixth_text"
android:textSize="@dimen/main_text" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:fontFamily="@font/noto_kufi_regular"
android:text="@{RenewLicenseBasicInfoFragmentVM.tvLicenseNum}"
android:textColor="@color/sixth_text"
android:textSize="@dimen/main_text" />
</LinearLayout>`enter code here`
</RelativeLayout>
答案 9 :(得分:0)
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="5dp"
android:layout_marginBottom="5dp"
android:background="@drawable/default_button">
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:layout_marginStart="15dp"
android:src="@drawable/google" />
<Button
android:id="@+id/btnGmailLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:paddingHorizontal="15dp"
android:text="@string/gmail_login_button_text"
android:textAllCaps="false"
android:textColor="@color/black" />
</RelativeLayout>