2013-11-02 207 views
0

enter image description hereAndroid相对布局

我正在寻找什么是最好的布局,以在android中完成以下操作。这类似于将要重复的行。

当前行由5个视图控件(两个图像和三个文本标签)组成。

我很确定我可以使用嵌套的表格布局来处理它。但是,从我读到目前为止。使用相对布局可以更好地处理它。

任何想法?如果您可以在帖子中包含样本布局,那将是非常好的。

感谢,

回答

1

相对布局是在大多数情况下,你应该使用什么。您可以定位与属性相对布局内的观点一样

android:alignParentTop="true" // This puts the view at the top of the Relative Layout 

android:layout_below="@id/view" // This puts the view below another view 

我现在不能测试,但这里是我将如何实现用相对布局的例子:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 

    <ImageView 
      android:id="@+id/ivBigImage" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     android:src="@drawable/bigImage" 
      android:layout_centerVertical="true" /> 

     <ImageView 
      android:id="@+id/ivSmallImage" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/smallImage" 
      android:layout_toRightOf="@id/ivBigImage"/> 

     <TextView 
      android:id="@+id/tvTextOne" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Plus" 
      android:layout_toRightOf="@id/ivSmallImage" /> 

     <TextView 
      android:id="@+id/tvTextTwo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Google Plus" 
      android:layout_toRightOf="@id/ivBigImage" 
      android:layout_below="@id/ivSmallImage/> 

     <TextView 
      android:id="@+id/tvTextThree" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="use to do some social networking" 
      android:layout_toRightOf="@id/ivBigImage" 
      android:layout_below="@id/tvTextTwo/> 


</RelativeLayout> 

当然,你永远不应该硬编码字符串就像我在这个例子做了:d

+0

它是有道理的。我需要在填充上工作,但它看起来非常类似于我的想法。 谢谢 – Sam

0

通常,我会与ListView一起去,因为我可以动态地为每一行从另一个布局添加更多的项目。与TableLayout相比,使用ListView的好处在于,如果行的内容超出屏幕可以包含的范围,您仍然可以向下滚动屏幕。

但是你也可以用一个ScrollView来包装TableLayout来达到同样的效果。

这只是关于你喜欢如何编码它。在用户方面,你可以通过两种布局获得几乎相同的UI结果。我做什么

例子:)

1在我的主要布局我有这个ListView控件作为容器。

<ListView android:id="@+id/summary" android:layout_width="match_parent" android:layout_height="match_parent" />

2)然后,我创建了一个名为row.xml对于将重复添加到ListView每一行另一个布局。

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:padding="4dp"> 

<ImageView 
    android:layout_width="60dp" 
    android:layout_height="60dp" 
    android:id="@+id/icon" 
    android:layout_gravity="center_vertical|left" 
    android:src="@drawable/green_alert" 
    android:layout_marginRight="12dp" 
    android:layout_marginLeft="6dp"/> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:id="@+id/tvPNO" 
      android:layout_gravity="center_vertical" 
      android:textStyle="bold" 
      android:maxLines="1" 
      android:ellipsize="end" 
      android:text="PNO: 001.01" 
      android:textColor="#C5EAF8" /> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/tvEntry" 
      android:layout_gravity="center_vertical" 
      android:gravity="right" 
      android:textStyle="bold" 
      android:maxLines="1" 
      android:ellipsize="end" 
      android:text="Entry: 1" 
      android:textColor="#C5EAF8" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:id="@+id/tvDefoliator" 
      android:layout_gravity="center_vertical" 
      android:minLines="1" 
      android:ellipsize="end" 
      android:text="Defoliator: Mahasena Corbetti" /> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/tvLpF" 
      android:layout_gravity="center_vertical" 
      android:gravity="right" 
      android:minLines="1" 
      android:ellipsize="end" 
      android:text="Larvae: 10" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="35" 
      android:gravity="left"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:id="@+id/tvOryctes" 
       android:layout_gravity="center_vertical" 
       android:minLines="1" 
       android:ellipsize="end" 
       android:text="Oryctes: " /> 
      <CheckBox 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:focusable="false" 
       android:clickable="false" 
       android:id="@+id/cbOryctes" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="35" 
      android:gravity="center"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:id="@+id/tvTermite" 
       android:layout_gravity="center_vertical" 
       android:minLines="1" 
       android:ellipsize="end" 
       android:text="Termite: "/> 
      <CheckBox 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:focusable="false" 
       android:clickable="false" 
       android:id="@+id/cbTermite"/> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="30" 
      android:gravity="right"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:id="@+id/tvRat" 
       android:layout_gravity="center_vertical" 
       android:minLines="1" 
       android:ellipsize="end" 
       android:text="Rat: " /> 
      <CheckBox 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:focusable="false" 
       android:clickable="false" 
       android:id="@+id/cbRat" /> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

我用1个图像和其他一些意见里面,它可能是类似于你希望达到的目标。

+0

感谢您的建议。 – Sam