Android中水平布局组件

时间:2010-12-04 14:21:36

标签: android xml layout mobile

我正在尝试在Android中创建一个通知布局。我的目标是显示以下内容:

1:应用的图标 2:垂直堆叠的LinearLayout,其中包含会话标题和Room 3:会话的开始时间

我面临的问题是#2的宽度可变,具体取决于标题的大小。如果用户将手机侧向转动并进入横向模式,则硬编码宽度会很糟糕。因此,这是我的问题:

如何在Android中水平布局三个组件,使#1和#3分别左右对齐,而#2只占用剩余空间?

4 个答案:

答案 0 :(得分:0)

看看RelativeLayout。你可以让你的中间LinearLayout使用android:layout_toLeftOf和android:layout_toRightOf强制它在中间。我通常会参考Android's Common Layout Object page以获得一个快速入门示例。我可能还有一个小小的警告,但我知道这是我曾经使用过的一般技巧,我很确定它有用。

答案 1 :(得分:0)

这样的事情可能是一个合理的基础:

<RelativeLayout
      android:id="@+id/RelativeLayout01"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="horizontal"
      xmlns:android="http://schemas.android.com/apk/res/android">
      <ImageView
            android:id="@+id/ImageView01"
            android:src="@drawable/droid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"></ImageView>
      <LinearLayout
            android:id="@+id/LinearLayout01"
            android:layout_below="@id/ImageView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_alignTop="@+id/ImageView01"
            android:layout_toRightOf="@+id/ImageView01" 
            android:background="#ffff00">
            <TextView
                  android:text="This is wide, wide, title text"
                  android:id="@+id/TextView01"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"></TextView>
            <TextView
                  android:text="Short text"
                  android:id="@+id/TextView02"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"></TextView>
            <TextView
                  android:text="Middling wide text"
                  android:id="@+id/TextView03"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"></TextView>

</LinearLayout>
      <TextView
            android:text="Right hand text"
            android:id="@+id/TextView04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/ImageView01" 
            android:background="#00ffff"></TextView>
</RelativeLayout>

你可能想在LinearLayout上硬编码一些左边距以给它一些间距

答案 2 :(得分:0)

与此斗争了几个小时后,我开始了解layout_weight的使用。似乎这是解决问题的适当方法

答案 3 :(得分:-1)

尝试这样的事情:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ImageView android:id="@+id/img1"
        android:background="#00F"
        android:layout_width="100dip"
        android:layout_height="100dip"
        android:layout_alignParentLeft="true"/>
    <ImageView android:id="@+id/img2"
        android:background="#0F0"
        android:layout_width="0dip"
        android:layout_height="100dip"
        android:layout_toRightOf="@id/img1"
        android:layout_toLeftOf="@+id/img3"/>
    <ImageView android:id="@+id/img3"
        android:background="#F00"
        android:layout_width="150dip"
        android:layout_height="100dip"
        android:layout_alignParentRight="true"/>
</RelativeLayout>