如何正确放置视图以使所有视图在线性布局中可见?

时间:2018-01-08 14:35:26

标签: android layout

我有一个水平线性布局,包含3个元素,一个图标和两个文本视图:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_margin="8dp"
        android:background="@drawable/icon_place" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:maxLines="1"
        android:text="Information 1"
        android:textColor="@android:color/black"
        android:textSize="14sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Information 2"
        android:gravity="right"
        android:textSize="13sp"
        android:maxLines="1"
        android:textColor="@android:color/darker_gray"
        android:layout_margin="8dp"/>

</LinearLayout>

给我这个:

enter image description here

我想要第二个文字视图&#34;信息2&#34;始终保持可见,如果需要,第一个文本视图被裁剪。但是第一个文本视图中的长文本会发生这种情况:

enter image description here

那我该怎么做呢?谢谢你的帮助!

5 个答案:

答案 0 :(得分:1)

首先你设置android:maxLines = 1来强制你的文本视图在一行可见。如果您希望textview根据内容进行裁剪。从xml中删除以下代码。

android:maxLines="1"

第二件事你的第一个textview占用线性布局的剩余空间而不是第二个textviewimageview你必须使用linearlay的android:weight属性。你可以在这里看到简单的布局重量属性。 https://developer.android.com/guide/topics/ui/layout/linear.html

Weightsum equalweights distributed weights您需要的所有复杂线性布局。请参阅本教程以获取帮助 http://abhiandroid.com/ui/linear-layout

这是代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recycler_view_empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">


<ImageView
    android:layout_width="20dp"
    android:layout_height="20dp"
    android:layout_margin="8dp"
    android:background="@drawable/ic_menu_send" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:layout_weight="1"
    android:text="Information 1 IInformation Information InformationInformationvvvInformation Information"
    android:textColor="@android:color/black"
    android:textSize="14sp"
    android:textStyle="bold" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Information 2"
    android:textSize="13sp"
    android:maxLines="1"
    android:textColor="@android:color/darker_gray"
    android:layout_margin="8dp"/>

</LinearLayout>

<强>输出:

enter image description here

在编辑器视图中

enter image description here

答案 1 :(得分:0)

您可以使用weightsum属性将两个TextView包装在水平LinearLayout中,将其分成两个相等大小的部分。如果文本太长,您也可以对文本进行椭圆化处理。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_margin="8dp"
        android:background="@drawable/icon_place" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:maxLines="1"
            android:gravity="center_horizontal"
            android:layout_weight="1"
            android:text="Information 1 with a very very long test"
            android:ellipsize="end"
            android:textColor="@android:color/black"
            android:textSize="14sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Information 2"
            android:gravity="center_horizontal"
            android:textSize="13sp"
            android:layout_weight="1"
            android:ellipsize="end"
            android:maxLines="1"
            android:textColor="@android:color/darker_gray"
            android:layout_margin="8dp"/>

    </LinearLayout>

</LinearLayout>

结果如下:

enter image description here

答案 2 :(得分:-1)

如果将其添加到所有3个组件,则存在“android:weigth = 1”的概念。然后它们的宽度总是33.3%,宽度不应该在显示长文本时改变,如果你想要宽度大约10%40%40%那么你将不得不召唤这个标签,ksatai值不被接受格式0.5,他们需要以这种格式写在这里.5

答案 3 :(得分:-1)

您应该将android:layout_weight="1"设置为中间的TextView,并将match_parent更改为wrap_content以获得第3个TextView

<?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:orientation="horizontal">

    <ImageView
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_margin="8dp"
        android:background="@drawable/ic_launcher_background" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:layout_weight="1"
        android:maxLines="1"
        android:text="Information 1"
        android:textColor="@android:color/black"
        android:textSize="14sp"
        android:textStyle="bold" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="right"
        android:maxLines="1"
        android:text="Information 2"
        android:textColor="@android:color/darker_gray"
        android:textSize="13sp" />

</LinearLayout>

here is the result screen

答案 4 :(得分:-1)

使用这个 -

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">

        <ImageView
            android:id="@+id/icon"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_margin="8dp"
            android:background="@android:drawable/ic_lock_idle_alarm" />

        <TextView
            android:layout_toRightOf="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:maxLines="1"
            android:text="Information 1"
            android:textColor="@android:color/black"
            android:textSize="14sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="Information 2"
            android:layout_marginLeft="28dp"
            android:background="@android:color/white"
            android:gravity="right"
            android:textSize="13sp"
            android:maxLines="1"
            android:textColor="@android:color/darker_gray"
            android:layout_marginTop="8dp"
            android:layout_marginRight="8dp"/>

    </RelativeLayout>