如何在linearlayout中互相设置textview

时间:2019-06-10 19:23:22

标签: android

我想要的是我可以在左侧和左侧的1个ImageView下方分别拥有2个textview。我无法在textview下获得第二个textview。

<?xml version="1.0" encoding="utf-8"?>

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

<ImageView
    android:id="@+id/displayImage"
    android:layout_width="67dp"
    android:layout_height="100dp"
    android:layout_gravity="left"
    android:layout_weight="1" />

<TextView
    android:id="@+id/textview_name"
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:layout_weight="2"
    android:paddingLeft="10dp"
    android:paddingTop="10dp"
    android:paddingBottom="3dp"
    android:textColor="@color/colorPrimaryDark"
    android:textSize="20sp"

    android:textStyle="bold" />

<TextView
    android:id="@+id/textview_description"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_weight="2"
    android:gravity="left"
    android:paddingLeft="10dp"
    android:paddingTop="10dp"
    android:paddingBottom="3dp"
    android:textSize="20sp" />
</LinearLayout>

结果现在看起来: Result

Expected result

3 个答案:

答案 0 :(得分:2)

您可以使用类似以下的内容:

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

    <ImageView
        android:id="@+id/displayImage"
        android:layout_width="67dp"
        android:layout_height="100dp"
        android:src="@color/colorPrimaryDark" />

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

        <TextView
            android:id="@+id/textview_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingBottom="3dp"
            android:text="Left text"
            android:textColor="@color/colorPrimaryDark"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textview_description"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingBottom="3dp"
            android:text="Right text" />
    </LinearLayout>
</LinearLayout>

您可以将LinearLayoutRelativeLayoutFrameLayout等容器彼此嵌套,以创建复杂的布局。

此外,我建议您先通过谷歌搜索来了解每个标签的作用,然后再在布局中的任何位置不当使用它们。我花了5分钟的时间来修复您的布局,因为您基本上在自己喜欢的任何地方添加了layout_weight

答案 1 :(得分:0)

您的线性布局方向是水平的,因此您不能使文本视图垂直对齐,除非您为具有垂直方向的2个文本视图再采用一种线性布局。否则,您可以使用单个相对布局来完成此操作。

这是结构

<LinearLayout> - horizontal orientation
<Imageview/>
<LinearLayout> - vertical orientation
<Textview/>
<Textview/>
</LinearLayout> - vertical orientation
</LinearLayout> - horizontal orientation.

答案 2 :(得分:0)

已将“线性布局”的方向设置为水平。这将使所有子级(在您的情况下为ImageView,TextView名称和TextView描述)彼此水平排列。

有很多方法可以做到这一点。 实现此目的的一种方法是使用RelativeLayout,然后可以使用

android:layout_toBottomOf="@id/textview_name"

使描述文本视图位于名称文本视图下方。

对于图像视图,您可以使用属性

android:layout_alignParentLeft="true"

使图像视图停留在左边框。请尝试使用RelativeLayout以获得所需的结果。

请使用Google提供的此代码实验室来使用ContraintLayout。 https://codelabs.developers.google.com/codelabs/constraint-layout/index.html#0