对于我的场景,RelativeLayout比LinearLayout更好吗?

时间:2014-05-21 14:11:01

标签: android android-layout

我想在屏幕上看到这样的东西。

enter image description here

左侧有一个图标和一个标签,右侧有一个图标和一个标签。

目前我正在通过LinearLayout进行此操作,但我不确定这会在大型显示器上表现如何,因为我正在硬编码两者之间的距离。在RelativeLayout我可以使用alignParentLeftalignParentRight。但是,我似乎无法像我的LinearLayout那样在中心对齐TextView。

以下是我使用的LinearLayout

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/myimg1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textSize="14dp"
        android:gravity="center"
        android:text="4 comments"
        android:textStyle="bold"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="160dp"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/myimg"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textSize="14dp"
        android:gravity="center"
        android:text="3 handlers"
        android:textStyle="bold"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="25dp"/>
</LinearLayout>

4 个答案:

答案 0 :(得分:0)

通常,RelativeLayouts可以比LinearLayout更高效(特别是如果线性设置中需要很多其他嵌套布局)。

如果您的布局复杂,需要将一堆布局嵌套在一起,现在是时候考虑替代方案(比如相对)。

要将TextView设置为对齐中心,您是否尝试过:alignParentCenter?

android:layout_centerInParent="true"

http://developer.android.com/reference/android/widget/RelativeLayout.html#CENTER_IN_PARENT

答案 1 :(得分:0)

如果您希望它们居中,则执行相对布局。将第二张图像固定在中央,并在相对位置添加其他图像。

答案 2 :(得分:0)

以下是一个可行的示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="15dp"
  android:layout_marginBottom="10dp"
  android:layout_marginLeft="10dp"
  android:orientation="horizontal">

<ImageView
    android:id="@+id/leftIcon"
    android:layout_alignParentLeft="true"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:src="@drawable/ic_search" />

  <TextView
    android:id="@+id/centerText"
    android:layout_toRightOf="@+id/leftIcon"
    android:layout_toLeftOf="@+id/imageRight"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="14dp"
    android:gravity="center"
    android:text="4 comments"
    android:textStyle="bold"/>

  <ImageView
    android:id="@+id/imageRight"
    android:layout_toLeftOf="@+id/textRight"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:src="@drawable/ic_search" />

  <TextView
    android:layout_alignParentRight="true"
    android:id="@+id/textRight"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:textSize="14dp"
    android:gravity="center"
    android:text="3 handlers"
    android:textStyle="bold"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="25dp" />
</RelativeLayout>

(我用我项目中的某些东西替换了图像)

这是我得到的预览:

enter image description here

答案 3 :(得分:0)

你可以尝试一下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="horizontal"
    tools:context=".MainActivity" >

    <LinearLayout
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:background="#ff00ff"
    android:gravity="center"
    android:layout_marginTop="15dp"    
    android:orientation="horizontal">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14dp"
        android:gravity="center"
        android:text="4 comments"
        android:textStyle="bold"/>
    </LinearLayout>

    <LinearLayout
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"   
    android:gravity="center"
    android:background="#00ff00" 
    android:orientation="horizontal">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14dp"
        android:gravity="center"
        android:text="3 handlers"
        android:textStyle="bold"/>
</LinearLayout>

</LinearLayout>