相对布局中心垂直
Posted
技术标签:
【中文标题】相对布局中心垂直【英文标题】:RelativeLayout center vertical 【发布时间】:2013-05-04 16:42:25 【问题描述】:我想做一个列表行布局。这个布局在最左边有一个 imageview,在 imageview 旁边有一个 textview,在最右边有一个 imageview。我希望它们都是中心垂直的。
<RelativeLayout
android:layout_ android:layout_
android:gravity="center_vertical"
>
<ImageView
android:id="@+id/icon"
android:layout_ android:layout_
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
android:layout_ android:layout_
android:layout_gravity="center_vertical" />
<ImageView
android:layout_ android:layout_
android:layout_alignParentRight="true"
android:layout_gravity="center_vertical"
android:src="@drawable/arrow" />
</RelativeLayout>
我还尝试将android:layout_centerVertical="true"
添加到textview,但结果是textview 底部与两个imageview 对齐。
我在 android 4.2 模拟器中试过这个。
有人可以帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:使用
android:layout_centerVertical="true"
【讨论】:
这应该是正确的答案,因为RelativeLayout没有layout_gravity属性。 “线性布局中的无效参数”【参考方案2】:我已经编辑了您的布局。立即检查此代码。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="#33B5E5"
android:padding="5dp" >
<ImageView
android:id="@+id/icon"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:background="@android:drawable/ic_lock_lock" />
<TextView
android:id="@+id/func_text"
android:layout_
android:layout_
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_
android:layout_
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical"
android:src="@android:drawable/ic_media_next" />
</RelativeLayout>
【讨论】:
【参考方案3】:如果 View 的高度/宽度 = wrap_content
使用:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
如果 View 的高度/宽度 = match_parent
使用:
android:gravity="center_vertical|center_horizontal"
【讨论】:
【参考方案4】:尝试将文本视图的顶部和底部与其中一个图标对齐,这将使文本视图与它们共享相同的高度,然后将 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_ android:layout_
android:gravity="center_vertical" />
【讨论】:
【参考方案5】:对我来说,我必须删除
<item name="android:gravity">center_vertical</item>
来自RelativeLayout,所以孩子的配置可以工作:
<item name="android:layout_centerVertical">true</item>
【讨论】:
【参考方案6】:这对我有用。
<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_
android:layout_
android:background="#096d74" >
<ImageView
android:layout_
android:layout_
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@drawable/img_logo_large"
android:contentDescription="@null" />
</RelativeLayout>
【讨论】:
【参考方案7】:这可能是因为 textview 太高了。将 textview 的 android:layout_height 更改为 wrap_content 或使用
android:gravity="center_vertical"
【讨论】:
【参考方案8】:同时添加 android:layout_centerInParent
和 android:layout_centerVertical
为我工作以使 ImageView
垂直和水平居中:
<ImageView
..
android:layout_centerInParent="true"
android:layout_centerVertical="true"
/>
【讨论】:
【参考方案9】: <RelativeLayout
android:layout_
android:layout_
android:orientation="horizontal">
<LinearLayout
android:layout_
android:layout_
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_
android:layout_
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_
android:layout_
android:fontFamily="@font/noto_kufi_regular"
android:text="@RenewLicenseBasicInfoFragmentVM.tvMunicipality"
android:textColor="@color/sixth_text"
android:textSize="@dimen/main_text" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
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_
android:layout_
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_
android:layout_
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>
【讨论】:
【参考方案10】: <RelativeLayout
android:layout_
android:layout_
android:layout_gravity="center_vertical"
android:layout_marginHorizontal="5dp"
android:layout_marginBottom="5dp"
android:background="@drawable/default_button">
<ImageView
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:layout_marginStart="15dp"
android:src="@drawable/google" />
<Button
android:id="@+id/btnGmailLogin"
android:layout_
android:layout_
android:background="@null"
android:paddingHorizontal="15dp"
android:text="@string/gmail_login_button_text"
android:textAllCaps="false"
android:textColor="@color/black" />
</RelativeLayout>
【讨论】:
如果是答案,请在您的答案中直接写下一些描述/信息。以上是关于相对布局中心垂直的主要内容,如果未能解决你的问题,请参考以下文章