2

我必須在下圖中構建佈局。 主要任務是將文本居中。
如何居中查看內部佈局

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> 

但它工作不正確。
我需要中心TextViewandroid:id="@+id/author"裏面的LinearLayoutandroid:id="@+id/ll"。但它集中在父母RelativeLayoutandroid:id="@+id/main_layout"
我使用android:layout_height="fill_parent"LinearLayoutandroid:id="@+id/ll"
我的佈局如何填充不是父級,而只剩下剩餘空間?
舉例說明它的實現,如果有人遇到類似的問題。

編輯:現在我錯了像現在下面的圖片居中文本。
enter image description here

在這一刻,我認爲最好的解決方案是使用android:layout_weight。
但是,當廣告沒有顯示 - 違反比例。

在LinearLayout中
+0

對不起,再次檢查我的答案。 – goodm

+0

即使使用'android:layout_above:「@ + id/footer_layout」'仍然'LinearLayout'' android:id =「@ + id/ll」'被拉伸到完整父親'RelativeLayout' – dimetil

+0

我剛剛測試過它,它工作得很好,我更新了我的答案。 – goodm

回答

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> 

+0

很好的回答!它確實集中。 我第一次錯過了什麼。謝謝。 – dimetil

2

,添加屬性:重力= 「CENTER_HORIZONTAL」 並在TextView中添加屬性:現在layout_gravity = 「CENTER_HORIZONTAL」

+0

我試圖這樣做。但它在父親RelativeLayout中居中。我希望佈局填充不是父級,而是footer_layout上方的剩餘空間。感謝您嘗試幫助。 – dimetil

+0

嘗試向組件添加重量! –

+0

一個很好的建議。 我試過了。但是,當廣告沒有顯示 - 比例被違反。 – dimetil

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在佈局的中心......

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> 
0

設置layout_centerInParent = true

+0

我添加了圖片以供澄清。 – dimetil