如何有序地居中一些视图并相应地对齐它们

时间:2014-05-10 03:39:59

标签: android android-layout layout

我想有条不紊地对齐并将我的观点放在布局上。如代码所示,第一个textview用于标题,它应该放在顶部并居中放置在布局的中间。第二个textview用于显示一些文本,它应该放在布局的中间。最后,button布局,它应该放在布局的底部,并在其中间居中。应用下面的代码不能完成这项工作,它会使所有视图混合

XML:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
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"
tools:context="com.example.meetingpointlocator_03" >  

<RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/introScreenTitleID"
    android:text="@string/introScreenTitle"
    android:textColor="@color/introScreenTitleColor"
    android:layout_gravity="center_vertical|center_horizontal"
    android:gravity="top|center"
    android:textSize="@dimen/introScreentitle">
</TextView>

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/introScreenContentID"
    android:textColor="@color/introScreenContentscolor"
    android:text="Some Text"
    android:layout_gravity="center_vertical|center_horizontal"
    android:textSize="@dimen/introScreenContentFontSize">
</TextView>

<Button 
    android:id="@+id/introButtonID"
    android:text="@string/introButtonText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" 
    android:layout_gravity="center"/>
</RelativeLayout>

4 个答案:

答案 0 :(得分:0)

// try this way,hope this will help you...

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.meetingpointlocator_03" >


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/introScreenTitleID"
        android:text="@string/introScreenTitle"
        android:textColor="@color/introScreenTitleColor"
        android:textSize="@dimen/introScreentitle"
        android:layout_marginTop="5dp">
    </TextView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginTop="5dp"
        android:layout_weight="1">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/introScreenContentID"
            android:textColor="@color/introScreenContentscolor"
            android:text="Some Text"
            android:textSize="@dimen/introScreenContentFontSize">

    </LinearLayout>

    <Button
        android:id="@+id/introButtonID"
        android:text="@string/introButtonText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"/>
</LinearLayout>    

答案 1 :(得分:0)

您需要在相对布局中定义视图之间的关系,这是正确的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.meetingpointlocator_03" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <TextView
            android:id="@+id/introScreenTitleID"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:gravity="top|center"
            android:text="@string/introScreenTitle"
            android:textColor="@color/introScreenTitleColor"
            android:textSize="@dimen/introScreentitle" >
        </TextView>

        <TextView
            android:id="@+id/introScreenContentID"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:text="Some Text"
            android:textColor="@color/introScreenContentscolor"
            android:textSize="@dimen/introScreenContentFontSize" 
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:layout_below="@+id/introScreenTitleID">
        </TextView>

        <Button
            android:id="@+id/introButtonID"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_centerHorizontal="true"
            android:text="@string/introButtonText"
            android:layout_below="@+id/introScreenContentID" />
    </RelativeLayout>
</LinearLayout 

进一步研究:
1. http://developer.android.com/reference/android/widget/RelativeLayout.html
2. http://knowledge.lapasa.net/?p=334

我希望这会有所帮助。

答案 2 :(得分:0)

让我们试试这段代码:

<?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: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"
tools:context="com.example.meetingpointlocator_03" >

<Button
    android:id="@+id/introButtonID"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="center"
    android:text="@string/introButtonText" />

<TextView
    android:id="@+id/introScreenTitleID"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="27dp"
    android:gravity="top|center" android:textColor="@color/introScreenTitleColor"
    android:text="@string/introscreentitle" 
    android:textSize="@dimen/introScreentitle"  />

<TextView
    android:id="@+id/introScreenContentID"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/introButtonID"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/introScreenTitleID" android:textColor="@color/introScreenContentscolor" android:textSize="@dimen/introScreenContentFontSize" 
    android:text="Some Text" />

</RelativeLayout>

OUTPUT

enter image description here

答案 3 :(得分:0)

使用相对布局,您可以设置对布局中其他项的引用。因此,例如,如果您想要文本视图下方的按钮,则需要引用类似于下面参考的ID。

android:layout_alignBottom="@+id/btnSatOff"

你也可以使用边距来获得你在项目之间寻找的间距。

当然,您可以使用与您开始时类似的简单线性布局,并使用layout_gravity设置以您希望的方式对齐项目。

顶部textview为layout_gravity="center"

中间文本视图为layout_gravity="center_horizontal"

按钮为layout_gravity="center|bottom"