2011-02-23 48 views
1

我已經創建了使用線性佈局的下面的佈局,它的運行良好,但我有一個疑問,它可以優化,因爲我已經使用嵌套的線性佈局創建此UI,我認爲它不好。Android - 想優化佈局

所以,你能幫我通過使用相對佈局或其他方式來優化這種線性佈局嗎?

我已經等被定義的佈局:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="6dip"> 

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_weight="1" 
     android:layout_height="fill_parent" 
     android:layout_marginLeft="10dip"> 

     <TextView 
      android:id="@+id/txtViewTitle" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
      android:textSize="18dip" 
      android:text="hello" 
     /> 
     <TextView 
      android:id="@+id/txtViewDescription" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
      android:textSize="14dip" 
      android:text="hello" 
      /> 
    </LinearLayout>  

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="50dip" 
     android:layout_height="fill_parent" 
     android:src="@drawable/arrow" 
     android:layout_marginLeft="3dip" 
     android:scaleType="center"/> 

</LinearLayout> 
+0

@PM:你能否詳細解釋你的問題,我的意思是你想做什麼? –

+0

解釋您的預期設計,如果可能請附上圖片。 –

+0

@Tushar我不想改變設計,但想要優化上面的代碼,因爲我採取了嵌套的線性佈局。 –

回答

2

這裏是使用的RelativeLayout代碼的重構:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:padding="6dip"> 
    <ImageView android:layout_marginLeft="3dip" android:id="@+id/image" 
     android:src="@drawable/arrow_cell" 
     android:layout_width="50dip" android:scaleType="center" 
     android:layout_alignParentRight="true" android:layout_height="wrap_content" android:layout_centerVertical="true"></ImageView> 
    <TextView android:textSize="18dip" android:layout_height="wrap_content" 
     android:layout_width="fill_parent" android:id="@+id/txtViewTitle" 
     android:layout_marginLeft="10dip" android:text="hello" 
     android:gravity="center_vertical" android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@+id/image"></TextView> 
    <TextView android:textSize="14dip" android:layout_height="wrap_content" 
     android:layout_width="fill_parent" android:id="@+id/txtViewDescription" 
     android:layout_marginLeft="10dip" android:text="hello2" 
     android:gravity="center_vertical" android:layout_below="@+id/txtViewTitle" 
     android:layout_toLeftOf="@+id/image"></TextView> 
</RelativeLayout> 

正如你說你想用它作爲一個ListView一排,我改變了父佈局「WRAP_CONTENT」的HIGHT。

+0

相同的答案張貼previouosly .... –

+0

不是真的..有一些更多的差異;在發佈之前您是否在Eclipse中嘗試過您的代碼?它仍然給我錯誤,除了剛剛編輯的最後一個。 – Adinia

+0

非常感謝您的支持,但是我很困惑,因爲這裏的答案几乎相同,所以我必須通過所有答案。我需要你的幫助來實現優化,因爲我看到你的評論可能會正確。 –

0

希望這有助於

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
android:padding="3dip"> 
<ImageView android:id="@+id/image" 
android:layout_width="50dip" 
android:layout_height="fill_parent" 
android:layout_alignParentRight="true" 
android:layout_alignParentTop="true" 
android:layout_alignParentBottom="true" 
android:layout_marginLeft="3dip" 
android:scaleType="center" 
android:src="@drawable/arrow" 
android:gravity="center" /> 


<TextView android:id="@+id/txtViewDescription" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:gravity="center_vertical" 
android:textSize="14dip" 
android:text="hello" 
android:layout_alignParentBottom="true" 
android:layout_alignParentLeft="true" 
android:layout_toLeftOf="@+id/image" 
/> 

<TextView android:id="@+id/txtViewTitle" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:gravity="center_vertical" 
android:textSize="18dip" 
android:text="hello" 
android:layout_alignParentTop="true" 
android:layout_alignParentLeft="true" 
android:layout_toLeftOf="@+id/image" 
android:layout_above="@+id/txtViewDescription" 
/> 

1

你可以試試這個,但我不認爲你需要這個

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent" 
android:padding="6dip"> 


<TextView android:id="@+id/txtViewTitle" android:layout_width="250dip" 
    android:layout_height="200dip" android:gravity="center_vertical" 
    android:textSize="18dip" android:text="hello" /> 
<TextView android:id="@+id/txtViewDescription" 
    android:layout_below="@+id/txtViewTitle" android:layout_width="250dip" 
    android:layout_height="200dip" android:gravity="center_vertical" 
    android:textSize="14dip" android:text="hello" /> 

<ImageView android:id="@+id/image" android:layout_width="50dip" 
    android:layout_height="fill_parent" android:layout_marginLeft="3dip" 
    android:scaleType="center" android:layout_alignParentRight="true" /> </RelativeLayout> 
0
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="wrap_content"  
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/txtViewTitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"   
     android:gravity="center_vertical" 
     android:textSize="18dip" 
     android:text="hello" 
    /> 
    <TextView 
     android:id="@+id/txtViewDescription" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center_vertical" 
     android:textSize="14dip" 
     android:text="hello" 
     />  

<ImageView 
    android:id="@+id/image" 
    android:layout_width="50dip" 
    android:layout_height="fill_parent" 
    android:src="@drawable/arrow" 
    android:layout_marginLeft="3dip" 
    android:scaleType="center"/> 

</LinearLayout> 
0

,也許你可以使用RelativeLayout的更換的LinearLayout,因爲對於這樣一個並不複雜的用戶界面,該RelativeLayout的有更好的表現。

+0

@PareshMayani在問題中,它說:「幫助我使用RelativeLayout進行優化,否則「所以OP很清楚這一點。除了只說它是一件好事(「可能」),它根本無助於OP。我不認爲這是一個沒有很多充實的答案。當然只是我的意見。 – BradleyDotNET