2014-06-06 81 views
2

這是垂直定向佈局中的一行。減少android佈局中的視圖層次結構

enter image description here

我這個XML創建:

<LinearLayout 
    android:id="[email protected]/lineWrapper" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/button_item_bg" 
    android:clickable="false" 
    android:orientation="horizontal" 
    android:baselineAligned="false"> 

    <LinearLayout 
     android:id="[email protected]/leftWrapper" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:paddingLeft="10dp"> 

     <TextView 
      android:id="@+id/header_title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="2dp" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:paddingTop="15dp" 
      android:text="Header Title" 
      android:textSize="19sp" /> 

     <TextView 
      android:id="@+id/header_sub_title" 
      android:text="Header Sub-title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="15dp" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:paddingTop="0dp" 
      android:textSize="16sp" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/rightWrapper" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center|center_horizontal" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     android:paddingRight="10dp"> 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center|right" 
      android:paddingRight="17dp" 
      android:text="Value" 
      android:textSize="26sp" /> 

    </LinearLayout> 

</LinearLayout> 

這需要大量使用線性佈局。有沒有辦法達到相同的效果,但少xml或更好的性能?

+1

工作有了一個RelativeLayout的 – elbaulp

+0

@ algui91告訴我怎麼請:) –

回答

2

像這樣(未經)

<RelativeLayout 
    android:id="@+id/lineWrapper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/button_item_bg" 
    android:clickable="false" 
    > 
    <TextView 
     android:id="@+id/txt_value" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_alignParentRight="true" 
     android:gravity="right|center_vertical" 
     android:paddingRight="27dp" 
     android:text="Value" 
     android:textSize="26sp" 
    /> 
    <TextView 
     android:id="@+id/header_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toLeftOf="@id/txt_value" 
     android:paddingBottom="2dp" 
     android:paddingLeft="20dp" 
     android:paddingRight="10dp" 
     android:paddingTop="15dp" 
     android:text="Header Title" 
     android:textSize="19sp" 
    /> 
    <TextView 
     android:id="@+id/header_sub_title" 
     android:text="Header Sub-title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/header_title" 
     android:layout_toLeftOf="@id/txt_value" 
     android:paddingBottom="15dp" 
     android:paddingLeft="20dp" 
     android:paddingRight="10dp" 
     android:textSize="16sp" 
    /> 
</RelativeLayout> 
+0

一個問題,txt_value不是在lineWrapper中垂直居中 –

+0

將此:'android:gravity =「center | right」'更改爲:'android:gravity =「right | center_vertical」' –

+0

不改變任何東西 –

2

注:請始終分配資源ID喜歡android:id="@+id/leftWrapper"代替android:id="[email protected]/leftWrapper",因此,使它正確。

您可以使用Relative佈局,您需要將項目放置在相互之間的關係中。欲瞭解更多see here

使用此代碼來實現相同的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/lineWrapper" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/ic_launcher" > 

    <TextView 
     android:id="@+id/header_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="2dp" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:paddingTop="15dp" 
     android:text="Header Title" 
     android:textSize="19sp" /> 

    <TextView 
     android:id="@+id/header_sub_title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="15dp" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp" 
     android:paddingTop="0dp" 
     android:text="Header Sub-title" 
     android:textSize="16sp" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/header_title" 
     android:layout_alignBottom="@+id/header_title" 
     android:layout_alignParentLeft="true" 
     android:gravity="center|right" 
     android:paddingRight="17dp" 
     android:text="Value" 
     android:textSize="26sp" /> 

</RelativeLayout> 
1

試試這個,會爲你

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/lineWrapper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/button_item_bg" 
    android:clickable="false" 
    > 
    <TextView 
     android:id="@+id/txt_value" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerInParent="true" 
     android:paddingRight="27dp" 
     android:text="Value" 
     android:textSize="26sp" 
    /> 
    <TextView 
     android:id="@+id/header_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toLeftOf="@+id/txt_value" 
     android:paddingBottom="2dp" 
     android:paddingLeft="20dp" 
     android:paddingRight="10dp" 
     android:paddingTop="15dp" 
     android:text="Header Title" 
     android:textSize="19sp" 
    /> 
    <TextView 
     android:id="@+id/header_sub_title" 
     android:text="Header Sub-title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/header_title" 
     android:layout_toLeftOf="@+id/txt_value" 
     android:paddingBottom="15dp" 
     android:paddingLeft="20dp" 
     android:paddingRight="10dp" 
     android:textSize="16sp" 
    /> 
</RelativeLayout>