我在选项卡式布局中编写了一个片段,如下所示:
我想将所有内容(按钮,editTextes和textViewes)放在屏幕中央。我对Android很新,所以我的问题是:我可以创建一个包含所有内容并垂直居中的“盒子”(就像我用蓝色绘制的那个盒子)吗?
在上图中,您可以看到我需要的东西。在这里,您可以找到XML代码。
<?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" />
答案 0 :(得分:1)
尝试将相对布局包装在垂直的Linearlayout中 <击> 撞击>
<击><LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- top view -->
<RelativeLayout
android:layout_gravity="center"
android:gravity="center" />
<!-- bottom view -->
<Relative2>
</LinearLayout>
击> <击> 撞击> 更新:仔细查看布局后,它应该可以正常工作。删除sepbar上的LayoutBelow并将组件基于其上方和下方。
<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" />
我不再使用相对布局了,当我这样做时会有特定的情况,但我通常会发现自己使用更多线性布局来做这样的事情。相对可能是一个令人头痛的问题。
答案 1 :(得分:1)
你可以使用垂直方向的LinearLayout ....主要的是&#34;概念&#34;你在上面提供的布局最好与linearlayout而不是relativelayout一起使用,因为在relativelayouts中我们有很多由于id改变而产生的连锁反应......而且上面的布局是单调的类型&#34; vertical&#34; ...根据我的经验,我喜欢使用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>
希望这能帮助你建立理念:)
由于