在这种情况下使用正确的布局?

时间:2017-01-05 04:32:52

标签: android android-layout android-studio

我对Android开发完全不熟悉,所以在某些情况下使用哪种布局我仍然感到困惑。

我需要重新创建:

http://i.imgur.com/BTcIgbS.png

在图像旁边有两行文字(一个在上面,一个在下面)。这都在一张卡片内。

Bold TextText应该垂直居中。 Subtext应该在第一行以下10dp。文本行与图像之间的空格为16dp

首先,我只使用了RelativeLayout ImageView和3 TextView,但这感觉错了,没有组织。

然后我尝试了这个:

http://i.imgur.com/eph6Em8.png

但我仍然不确定这是否是最正确的方法。

我应该改变什么?

4 个答案:

答案 0 :(得分:0)

试试这个: 设置您的" 父布局" as" RelativeLayout "。
在此相对布局中,使用 ImageView 并设置" alignParentLeft "属性为真,也是" centreInparent "为真。 现在,在 RelativeLayout 中,将 LinearLayout 设置为 Veritical 和" toRightOf = @ id / ImageView"。在 LinearLayout 中,将 RelativeLayout (RelativeLayout2)作为第一个孩子,然后在其中取两个" TextViews "。

一个用" alignParentLeft = true "和" width = matchparent "。而第二个" alignParenRight = true "和" width = wrap_content "。现在,您需要的是第一个" TextView "设置" toLeftOf = @ id / secondTextView "。

现在关于最后一个" TextView "。只需创建一个" TextView "在LinearLayout内部(您在上面创建的垂直方向)并将其作为第二个子项。 这将创建一个完美的布局。这也是创建一个的简单方法。

答案 1 :(得分:0)

您可以使用Constraint Layout来实现所需的UI。下面是实现UI的xml代码。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        app:src="@drawable/def_doc"
        android:id="@+id/rvMsg_img"
        android:maxHeight="80dp"
        android:maxWidth="80dp"
        android:minHeight="80dp"
        android:minWidth="80dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/viewLine" />

    <TextView
        android:text="Kevin De Bruyne"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rvMsg_name"
        android:textColor="@color/textBlack"
        app:layout_constraintTop_toTopOf="@+id/rvMsg_img"
        app:layout_constraintBottom_toBottomOf="@+id/rvMsg_img"
        android:layout_marginStart="16dp"
        app:layout_constraintLeft_toRightOf="@+id/rvMsg_img"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        app:layout_constraintVertical_bias="0.2"
        app:layout_constraintHorizontal_bias="0.0"
        android:textSize="16sp"
        app:layout_constraintRight_toLeftOf="@+id/rvMsg_time" />

    <TextView
        android:text="Hello developer. please check this message for long length. max length to 50 characters."
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/rvMsg_last"
        android:maxLines="2"
        android:ellipsize="end"
        android:layout_marginTop="8dp"
        app:layout_constraintTop_toBottomOf="@+id/rvMsg_name"
        android:layout_marginStart="16dp"
        app:layout_constraintLeft_toRightOf="@+id/rvMsg_img"
        android:layout_marginLeft="16dp"
        app:layout_constraintBottom_toBottomOf="@+id/rvMsg_img"
        app:layout_constraintVertical_bias="0.0"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintRight_toLeftOf="@+id/rvMsg_time"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp" />

    <TextView
        android:text="09:50 AM"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/rvMsg_time"
        app:layout_constraintTop_toTopOf="@+id/rvMsg_img"
        app:layout_constraintBottom_toBottomOf="@+id/rvMsg_img"
        android:layout_marginStart="8dp"
        app:layout_constraintLeft_toRightOf="@+id/rvMsg_img"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp"
        app:layout_constraintVertical_bias="0.2"
        app:layout_constraintHorizontal_bias="1.0" />

    <View
        android:id="@+id/viewLine"
        android:layout_height="2dp"
        android:layout_width="0dp"
        android:background="#EAEAEA"
        android:layout_marginStart="16dp"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_marginLeft="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_marginRight="16dp"
        app:layout_constraintBottom_toBottomOf="parent" />

</android.support.constraint.ConstraintLayout>

希望它会对你有所帮助。

答案 2 :(得分:0)

试试这个布局结构

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

<ImageView
    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<LinearLayout
    android:layout_weight="1"

    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

<TextView
    android:layout_weight="1"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

答案 3 :(得分:0)

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="centar"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="4">

<ImageView
    android:layout_width="0dp"
    android:layout_height="100dp"
    android:layout_weight="1"
    android:src="@mipmap/ic_launcher" />

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="2"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BOLD TEXT"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sub Text" />
</LinearLayout>

<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Text" />

将此代码兑换成gole。