2011-02-23 49 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