Android:3个元素并排

时间:2014-05-30 11:39:59

标签: android android-layout

我不知道如何并排排列3个元素。我想:

  • 左侧有一个宽薄的视图
  • 一个在中间有文字内容的linearLayout
  • 一个imageView始终在右侧

像这样:

enter image description here

今天,我得到了这个:

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="match_parent"
    android:background="@color/gris_clair"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@color/blanc" >

        <View
            android:id="@+id/view1"
            android:layout_width="7dp"
            android:layout_height="90dp"
            android:background="@color/green_normal" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView" />

        </LinearLayout>

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="80dp"
            android:layout_height="90dp"
            android:layout_gravity="right"
            android:scaleType="centerCrop"
            android:src="@drawable/test2" />

    </LinearLayout>

</LinearLayout>

5 个答案:

答案 0 :(得分:2)

对于textview使用权重来填补空间:

<TextView
                android:id="@+id/textView1"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="TextView" />

答案 1 :(得分:2)

您可以通过将根LinearLayout设置为水平方向来简化布局:

<?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="wrap_content"
    android:background="@color/gris_clair"
    android:layout_margin="5dp"
    android:orientation="horizontal" >

    <View
        android:id="@+id/view1"
        android:layout_width="7dp"
        android:layout_height="match_parent"
        android:background="@color/green_normal" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="TextView" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="80dp"
        android:layout_height="90dp"
        android:layout_gravity="right"
        android:scaleType="centerCrop"
        android:src="@drawable/test2" />

</LinearLayout>

您可能需要调整颜色或尺寸以适合您想要的最终结果 我设置父视图的高度以包装内容,前两个视图匹配父视图的高度,图像匹配您的大小。这意味着您的图像将决定父视图的高度。

如果要在屏幕上水平均匀地间隔/缩放视图并用尽所有可用空间,则应查看android:layout_weight属性。您可以为要按屏幕尺寸缩放的每个视图设置android:layout_width="0dp",并添加android:layout_weight="x",其中x是数字。

您选择的数字取决于您希望如何划分每个View将使用的可用空间。例如,如果您希望一个View使用1/3的可用空间而第二个使用2 / 3rds,则将第一个设置为1,将第二个设置为21+2=3所以1 of a total 3 units2 of a total 3 units

答案 2 :(得分:1)

您可以使用relative layout。并为图像视图添加alignparentright规则。

<RelativeLayout >

    <View />

    <LinearLayout/>

    </LinearLayout>

    <ImageView
        android:alignParentRight="true" />

</RelativeLayout>

或使用linearlayout的权重,将1设为textview,其余为0。

答案 3 :(得分:0)

您可以使用LinearLayout中的权重轻松解决此问题,或者使您的父亲RelativeLayout并将中间布局放置在左视图的左侧,并将右侧视图放置到右侧。

答案 4 :(得分:0)

您可以使用相对布局而不是线性布局来设计页面的自定义设计。 它可能会对你有帮助。

<?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="match_parent"
android:background="@color/gris_clair"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:background="@color/blanc" >

    <View
        android:id="@+id/view1"
        android:layout_width="7dp"
        android:layout_height="90dp"
        android:background="@color/green_normal" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </LinearLayout>

    <RelativeLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="80dp"
        android:layout_height="90dp"
        android:scaleType="centerCrop"
        android:src="@drawable/test2"
        android:layout_alignParentRight="true"
         />
    </RelativeLayout>

</LinearLayout>

检查这可能会对你有所帮助