我知道我们可以为android:gravity和 android:layout_gravity属性设置以下值:
centercenter_verticalcenter_horizontal等但我对这两个问题感到困惑.
使用android:gravity和有android:layout_gravity什么区别?
我有一个具有以下布局的活动:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/testlayoutOverlays"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/testlayoutMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/testlayout_bottom"
android:layout_width="fill_parent"
android:layout_height="62dp"
android:background="#122334" >
<ImageView
android:id="@+id/testbtnBlock"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentLeft="true"
android:layout_gravity="left|center_vertical"
android:contentDescription="Test1"
android:padding="@dimen/padding_medium"
android:src="@drawable/btnblock" />
<TextView
android:id="@+id/testtxtZoomPan"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/testbtnX"
android:layout_toRightOf="@+id/testbtnBlock"
android:gravity="center_horizontal"
android:text="@string/txtZoomPan"
android:textColor="#FFFFFF" />
<ImageView
android:id="@+id/testbtnX"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_gravity="right|center_vertical"
android:contentDescription="Test2"
android:padding="@dimen/padding_medium"
android:src="@drawable/btnx" />
</RelativeLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/testlayoutPuzzleInfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:orientation="horizontal" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/testlayoutChronoErrors"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Chronometer
android:id="@+id/testchronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:format="@string/chronometer_initial_format"
android:gravity="center" />
<LinearLayout …Run Code Online (Sandbox Code Playgroud) 我已经明白,如果我layout_gravity="center_horizontal"在文本视图上使用,那么文本将是中心.但我不想使用它,因为我希望尽可能少的代码,最好的方法是应用gravity="center_horizontal"我的相对布局.我也问这个问题,因为我甚至担心使用gravity或layout_gravity使用相对布局.在做我的研究时,我发现了这个答案.
注意部分说:
不要将gravity/layout_gravity与RelativeLayout一起使用.将它们用于LinearLayouts和FrameLayouts中的视图.
尽管从相对布局Android文档(它明确gravity列为有效属性)中看起来很明显,Google希望这些属性与相对布局一起使用.
如果该引用是正确的,我如何在相对布局中居中视图?
另外,这是我的代码:
请注意,标题不是水平居中的
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center_horizontal"
tools:context="com.something">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Title"
android:textAlignment="center"
android:text="@string/app_title"
android:layout_marginBottom="@dimen/main_spacing"
android:textSize="24sp" />
<AutoCompleteTextView
android:id="@+id/enterContact"
android:text="Enter Contact"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_below="@+id/title"
android:layout_marginBottom="@dimen/main_spacing" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我需要在视图上找到文本:
文本'更多文字'应位于bottom | center_horizontal
文本"短文本"应位于右对齐位置,但距离屏幕顶部约10%
文本'xxxx'应与屏幕中心对齐(第一个四分之一的右/底对齐)
文本'一些长文本..'应该与屏幕的第三个四分之一的顶部/左边对齐,但它应该穿过屏幕的center_horizontal.