如何居中查看内部布局

时间:2012-05-23 11:47:58

标签: android android-layout android-linearlayout layout-gravity

我必须建立如下图所示的布局。 主要任务是使文本居中。

enter image description here

我使用这个xml来实现布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/author"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/author">
    </LinearLayout>

    <LinearLayout
        android:id="@+id/footer_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:orientation="vertical" 
        android:layout_alignParentBottom="true">

        <LinearLayout
            android:id="@+id/menu_layout"
            android:layout_width="fill_parent"
            android:layout_height="60dp"
            android:background="@drawable/nav_overlay"
            android:gravity="center_horizontal"
            android:orientation="horizontal">

            <Button
                android:id="@+id/previous"
                android:layout_width="45dp"
                android:layout_height="45dp"
                android:background="@drawable/button" />

        </LinearLayout>

        <com.google.ads.AdView
            xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
            android:id="@+id/adView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            ads:adSize="BANNER"
            ads:adUnitId="@string/admob_id"
            ads:loadAdOnCreate="true" />
    </LinearLayout>

</RelativeLayout>

但它的工作原理不正确 我需要将TextView android:id="@+id/author"置于LinearLayout android:id="@+id/ll"内。但它以父RelativeLayout android:id="@+id/main_layout"为中心 我对android:layout_height="fill_parent" LinearLayout使用android:id="@+id/ll" 我的布局如何填充不是父母而是仅剩余空间? 如果有人遇到类似的问题,举一个它的实现的例子。

编辑:现在我的中心文字错误,如下图所示 enter image description here

此时此刻,我认为最好的解决方案是使用android:layout_weight 但是,当广告未显示时 - 比例被违反。

5 个答案:

答案 0 :(得分:6)

立即尝试:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/ll"
    android:layout_above="@+id/footer_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/author"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/author"/>
</LinearLayout>

<LinearLayout
    android:id="@+id/footer_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:orientation="vertical" 
    android:layout_alignParentBottom="true">

    <LinearLayout
        android:id="@+id/menu_layout"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:background="@drawable/nav_overlay"
        android:gravity="center_horizontal"
        android:orientation="horizontal">

        <Button
            android:id="@+id/previous"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:background="@drawable/button" />

    </LinearLayout>

    <com.google.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
        android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="@string/admob_id"
        ads:loadAdOnCreate="true" />
</LinearLayout>

答案 1 :(得分:2)

在linearlayout中,添加属性:gravity =“center_horizo​​ntal” 并在textview中添加属性:layout_gravity =“center_horizo​​ntal”

答案 2 :(得分:2)

为您的textview添加重力。找到以下代码

       <TextView
        android:id="@+id/author"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="hiiiiiiiiiii"/>

这将在布局的中心提供您的textview ...

答案 3 :(得分:0)

更改文字视图布局,如下所示:

 <TextView
        android:id="@+id/author"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:text="@string/author">
    </TextView>
</LinearLayout>

答案 4 :(得分:0)

设置layout_centerInParent = true