2011-09-27 48 views
2

我正在铺设一个用于ListView的行,我需要一点帮助。该行看起来像这样:Android +您会建议哪种布局?

enter image description here

下面是我到目前为止,亮点BG是显示不出来和文本将不会居中对齐(粘在上面)。

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rl0" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="0dp" 
    android:layout_margin="0dp" 
    android:background="@color/grey"> 
    <!-- shine --> 
    <LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView 
     android:id="@+id/imgShine" 
     android:background="@color/shine" 
     android:layout_height="0dp" 
     android:layout_width="fill_parent" 
     android:layout_weight="1" /> 
    <View 
     android:layout_height="0dp" 
     android:layout_width="fill_parent" 
     android:layout_weight="1" /> 
    </LinearLayout> 
    <LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:id="@+id/ll" 
    android:layout_gravity="center_vertical"> 
    <!-- cal graphic --> 
    <RelativeLayout 
     android:id="@+id/rl1" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:padding="10dp"> 
     <!-- cal bg --> 
     <ImageView 
     android:id="@+id/imageView1" 
     android:src="@drawable/cal" 
     android:layout_width="60dp" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:scaleType="fitCenter" 
     android:layout_centerVertical="true" 
     android:layout_alignParentLeft="true" /> 
     <!-- month --> 
     <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tvMonth" 
     android:textSize="11sp" 
     android:layout_marginLeft="11dp" 
     android:layout_marginTop="10dp" 
     android:textColor="@drawable/list_cal_selector" /> 
     <!-- day --> 
     <TextView 
     android:id="@+id/tvDay" 
     android:textSize="23sp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tvMonth" 
     android:layout_marginTop="2dp" 
     android:layout_centerHorizontal="true" 
     android:textColor="@drawable/list_cal_selector" /> 
    </RelativeLayout> 
    <!-- text and button graphic --> 
    <RelativeLayout 
     android:id="@+id/rl2" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:layout_gravity="center_vertical"> 
     <!-- team name --> 
     <TextView 
     android:id="@+id/tvTeam" 
     android:textSize="23dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingBottom="0dp" 
     android:textColor="@drawable/list_text_selector" /> 
     <TextView 
     android:id="@+id/tvTime" 
     android:textSize="12sp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tvTeam" 
     android:textColor="@drawable/list_text_selector" /> 
     <TextView 
     android:id="@+id/tvStation" 
     android:textSize="12sp" 
     android:paddingLeft="12dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tvTeam" 
     android:layout_toRightOf="@+id/tvTime" 
     android:textColor="@drawable/list_text_selector" /> 
     <!-- add button --> 
     <ImageView 
     android:id="@+id/imgAddBtn" 
     android:src="@drawable/btn" 
     android:layout_height="wrap_content" 
     android:layout_width="60dp" 
     android:scaleType="fitCenter" 
     android:layout_centerVertical="true" 
     android:adjustViewBounds="true" 
     android:layout_alignParentRight="true" 
     android:padding="10dp" /> 
     <!-- divider --> 
     <ImageView 
     android:id="@+id/imgDivider" 
     android:src="@drawable/divider" 
     android:layout_height="fill_parent" 
     android:layout_width="2dp" 
     android:layout_toLeftOf="@id/imgAddBtn" 
     android:cropToPadding="false" /> 
    </RelativeLayout> 
    </LinearLayout> 
</FrameLayout> 

回答

1

我只使用一个RelativeLayout。它将避免使用各种布局,并且更容易将组件放置在屏幕上。

编辑:此解决方案,但我不知道这是否是最好的:

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

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentBottom="true" 
     android:orientation="vertical" > 

     <View 
      android:layout_width="1dp" 
      android:layout_height="0dp" 
      android:layout_weight="0.25"/> 

     <ImageView 
      android:layout_weight="0.5" 
      android:layout_height="0dp" 
      android:layout_width="50dp" 
      android:background="#dedede"/> 

     <View 
      android:layout_width="1dp" 
      android:layout_height="0dp" 
      android:layout_weight="0.25"/> 
    </LinearLayout> 

    <!-- 
    ... 
    --> 
</RelativeLayout> 
+0

呀,但对BG亮点设定为50%什么高度,我不需要使用LinearLayout来做到这一点吗?如果是这样,那么不需要FrameLayout将它放在任何RelativeLayouts后面,就像我上面所做的那样? – worked

+0

Hummm ..您只需在ImageViews中使用50%的高度? – Rodrigo

+0

是的,不幸的是... android需要百分比... – worked

0

看看这个教程,你可以选择布局是最好的。每个布局都有自己的优点和缺点。只有一个布局在Android中不是最好的,但在大多数情况下Relative layout易于使用,因为它已经转移到任何UI的地方。

就像你匹配的问题,教程

http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html

你可以看到developer.android.con更多的布局。它必须学习更简单的方法。这里有一些​​你可以看到各种布局。

http://developer.android.com/resources/tutorials/views/hello-relativelayout.html

http://developer.android.com/guide/topics/ui/layout-objects.html

http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-relative-layouts/

http://www.learn-android.com/2010/01/05/android-layout-tutorial/

+0

感谢您的链接!具体来说,使用LinearLayout是将2个视图设置为50%高度(或宽度)的唯一方法? – worked

0

enter image description here检查了这一点

![<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="35dp" 
    android:orientation="horizontal" > 

    <ImageView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:scaleType="centerInside" 
     android:src="@drawable/ic_launcher" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="40dp" 
     android:layout_weight="4" 
     android:orientation="vertical" > 

     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Row 1" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:text="Row 2" /> 

      <TextView 
       android:layout_marginLeft="10dp" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="Row 3" /> 
     </LinearLayout> 
    </LinearLayout> 

    <View android:layout_height="match_parent" 
     android:layout_width="2dp" 
     android:background="#fff"/> 
    <ImageView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:scaleType="centerInside" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout>