Android相对布局中心每个元素
我在选项卡式布局中编写了一个片段,如下所示: 我希望所有内容(按钮、编辑文本和文本视图)都位于屏幕中央。我对安卓相当陌生,所以我的问题是:我能创建一个包含所有内容的“盒子”(就像我用蓝色画的那样)并将其垂直居中吗 在上面的图片中,你可以看到我需要什么。在这里可以找到XML代码Android相对布局中心每个元素,android,xml,android-layout,Android,Xml,Android Layout,我在选项卡式布局中编写了一个片段,如下所示: 我希望所有内容(按钮、编辑文本和文本视图)都位于屏幕中央。我对安卓相当陌生,所以我的问题是:我能创建一个包含所有内容的“盒子”(就像我用蓝色画的那样)并将其垂直居中吗 在上面的图片中,你可以看到我需要什么。在这里可以找到XML代码 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/a
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="@string/rad_grad"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#26D50D" />
<EditText
android:id="@+id/editText1"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerInParent="true"
android:layout_below="@+id/textView2"
android:layout_marginTop="20dp"
android:hint="@string/hint1"
android:ems="10" >
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:layout_marginTop="20dp"
android:textSize="15dp"
android:text="@string/convert" />
<EditText
android:id="@+id/editText2"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_centerInParent="true"
android:gravity="center"
android:layout_toRightOf="@+id/button1"
android:layout_marginLeft="20dp"
android:ems="10"
android:editable="false" >
<requestFocus />
</EditText>
<View
android:id="@+id/sepbar"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:layout_below="@+id/button1"
android:layout_marginTop="50dp"
android:background="@android:color/darker_gray" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_marginTop="40dp"
android:gravity="center"
android:text="@string/grad_rad"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#26D50D"
android:layout_below="@+id/sepbar" />
<EditText
android:id="@+id/editText3"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerInParent="true"
android:layout_marginTop="20dp"
android:hint="@string/hint2"
android:ems="10"
android:layout_below="@+id/textView3" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText3"
android:layout_below="@+id/editText3"
android:layout_marginTop="20dp"
android:textSize="15dp"
android:text="@string/convert" />
<EditText
android:id="@+id/editText4"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:layout_marginLeft="20dp"
android:ems="10"
android:editable="false"
android:gravity="center" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:text="@string/devname"
android:textAppearance="?android:attr/textAppearanceSmall"
android:gravity="center" />
尝试将相对布局包装为垂直线性布局
更新:仔细查看布局后,它应该可以工作。移除sepbar上的下方布局,并使其上方和下方的组件脱离
<View
android:id="@+id/sepbar"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
--> Remove me android:layout_below="@+id/button1"
android:layout_marginTop="50dp"
android:background="@android:color/darker_gray" />
删除我android:layout_=“@+id/button1”
android:layout_marginTop=“50dp”
android:background=“@android:color/darker\u gray”/>
我不再经常使用相对布局,我使用相对布局时会有一些特定的情况,但我通常会发现自己使用更多的线性布局。“相对”是一个让人头疼的问题。您可以使用垂直方向的线性布局。。。。最主要的是“概念”,您上面提供的布局最好与linearlayout而不是relativelayout一起使用,因为在relativelayout中,由于id更改,我们会产生很多涟漪效应。。。而上面的布局是单调型的“垂直”。。。根据我的经验,当我有无序的布局时,我更喜欢使用relativelayout,比如中间有一只熊,然后左上有一只鸟,右上有一个球,等等 至于蓝色的布局,这里是代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content" <!--(hear you can imagine like this if you give wrap content then linearlayout gravity will be used but if you use match_parent then u will have to use gravity here else android default ltr gravity will be used )-->
android:layout_height="wrap_content"
android:text="Radianti..."/>
<EditText
android:layout_width="match_parent"<!--(im using match_parent because its going to be this edittext child which needs gravity so the parent linearlayout gravity wont work on this edittext contents {child})-->
android:layout_height="wrap_content"
android:android:gravity="center"
android:text="my edit text content..."/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:android:gravity="center"
android:orientation="horizontal"<!--note this it will place itself vertically in parent now we can place its child contents horizontally-->
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:android:gravity="center"
android:text="another etx"/>
<!-- you can use layout_weight in linearlayout to give width in percentage value ranges from 0 1 i guess decimal is allowed i used like 0.4 and 0.6 so it means 40 percent and 60 percent you can read about it more... -->
</LinearLayout>
</LinearLayout>
android:layout\u height=“包装内容”
android:android:gravity=“中心”
android:text=“我的编辑文本内容…”/>
希望这将有助于您建立概念:)
谢谢
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content" <!--(hear you can imagine like this if you give wrap content then linearlayout gravity will be used but if you use match_parent then u will have to use gravity here else android default ltr gravity will be used )-->
android:layout_height="wrap_content"
android:text="Radianti..."/>
<EditText
android:layout_width="match_parent"<!--(im using match_parent because its going to be this edittext child which needs gravity so the parent linearlayout gravity wont work on this edittext contents {child})-->
android:layout_height="wrap_content"
android:android:gravity="center"
android:text="my edit text content..."/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:android:gravity="center"
android:orientation="horizontal"<!--note this it will place itself vertically in parent now we can place its child contents horizontally-->
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:android:gravity="center"
android:text="another etx"/>
<!-- you can use layout_weight in linearlayout to give width in percentage value ranges from 0 1 i guess decimal is allowed i used like 0.4 and 0.6 so it means 40 percent and 60 percent you can read about it more... -->
</LinearLayout>
</LinearLayout>