LinearLayout中的TextView被另一个TextView推到外面

时间:2017-07-07 05:42:46

标签: android android-layout layout

美好的一天!我试图实现一种特定的布局。我希望有人能给我一个如何正确做到的提示。

所以,在我的布局中,我在一个水平方向的LinearLayout中有两个TextView。第一个TextView包含公司的名称,第二个TextView包含许多与之关联的项目。

我希望我的布局表现得像this.

我目前的布局如this

以下是布局的具体代码:

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

    <TextView
        android:id="@+id/contractor_item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Gem Seeker Company and  Supplies in"
        android:textColor="@color/list_title"
        android:textSize="16sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="(0)"
        android:textSize="16sp"
        android:textStyle="bold"
        android:maxLines="1"
        android:layout_marginStart="4dp"
        android:textColor="@color/space_gray_01"/>

</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:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:background="@android:color/white"
    android:orientation="horizontal">

    <LinearLayout
        android:id="@+id/contractor_item_layout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/contractor_item_avatar"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:background="@color/space_gray_01"
            android:contentDescription="@string/image_description"
            android:src="@drawable/ic_user_light" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">

            <TextView
                android:id="@+id/contractor_item_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone" />

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

                <TextView
                    android:id="@+id/contractor_item_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text="Gem Seeker Company and  Supplies in"
                    android:textColor="@color/list_title"
                    android:textSize="16sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="(0)"
                    android:textSize="16sp"
                    android:textStyle="bold"
                    android:maxLines="1"
                    android:layout_marginStart="4dp"
                    android:textColor="@color/space_gray_01"/>

            </LinearLayout>

            <TextView
                android:id="@+id/contractor_item_address"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="@string/text_no_address"
                android:textColor="@color/list_subtitle"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/contractor_item_phone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/text_no_contact"
                android:textColor="@color/list_subtitle"
                android:textSize="14sp" />

        </LinearLayout>

    </LinearLayout>

    <ImageView
        android:id="@+id/contractor_item_show"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_marginTop="8dp"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:contentDescription="@string/image_description"
        android:src="@drawable/ic_show"
        android:tint="@color/space_gray_02" />

</LinearLayout>

4 个答案:

答案 0 :(得分:1)

你可以尝试这个布局,你想调整视图的孩子只需给予重量1和宽度odp它就可以正常工作。

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

    <TextView
        android:id="@+id/contractor_item_name"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Gem Seeker Company and  Supplies in dddddddddddds"
        android:textColor="@color/list_title"
        android:textSize="16sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="(0)"
        android:textSize="16sp"
        android:textStyle="bold"
        android:maxLines="1"
        android:layout_marginStart="4dp"
        android:textColor="@color/space_gray_01"/>

</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:layout_marginEnd="8dp"
              android:layout_marginStart="8dp"
              android:layout_marginTop="8dp"
              android:background="@android:color/white"
              android:orientation="horizontal">

    <LinearLayout
        android:id="@+id/contractor_item_layout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/contractor_item_avatar"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:background="@color/space_gray_01"
            android:contentDescription="@string/image_description"
            android:src="@drawable/ic_user_light" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">

            <TextView
                android:id="@+id/contractor_item_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone" />

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

                <TextView
                    android:id="@+id/contractor_item_name"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text="Gem Seeker Company and  Supplies in"
                    android:textSize="16sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="(0)"
                    android:textSize="16sp"
                    android:textStyle="bold"
                    android:maxLines="1"
                    android:layout_marginStart="4dp"
                    android:textColor="@color/space_gray_01"
                    />

            </LinearLayout>

            <TextView
                android:id="@+id/contractor_item_address"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="@string/text_no_address"
                android:textColor="@color/list_subtitle"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/contractor_item_phone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/text_no_contact"
                android:textColor="@color/list_subtitle"
                android:textSize="14sp" />

        </LinearLayout>

    </LinearLayout>

    <ImageView
        android:id="@+id/contractor_item_show"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_marginTop="8dp"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:contentDescription="@string/image_description"
        android:src="@drawable/ic_show"
        android:tint="@color/space_gray_02" />

</LinearLayout>

答案 1 :(得分:0)

试试这个

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


<TextView
    android:id="@+id/contractor_item_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:maxLines="1"
    android:maxLength="10" // set ellipsize as per your reqiement
    android:text="Gem Seeker Company and  Supplies in"
    android:textSize="16sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="(0)"
    android:textSize="16sp"
    android:textStyle="bold"
    android:maxLines="1"
    android:layout_marginStart="4dp"
    />
</LinearLayout>

答案 2 :(得分:0)

您需要在水平文字视图中使用 layout_weight 属性。

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

    <TextView
        android:id="@+id/contractor_item_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:layout_weight="0.7"
        android:text="Gem Seeker Company and  Supplies in"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="4dp"
        android:maxLines="1"
        android:layout_weight="1.3"
        android:text="(0)"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        android:textStyle="bold"
        tools:ignore="RtlCompat" />

</LinearLayout>

布局代码

<?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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:background="@android:color/white"
    android:orientation="horizontal">

    <LinearLayout
        android:id="@+id/contractor_item_layout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/contractor_item_avatar"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:background="@color/colorAccent"
            android:contentDescription="@string/app_name"
            android:src="@drawable/ic_back_test"
            tools:ignore="RtlCompat" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="16dp">

            <TextView
                android:id="@+id/contractor_item_id"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="gone" />

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

                <TextView
                    android:id="@+id/contractor_item_name"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:layout_weight="0.7"
                    android:text="Gem Seeker Company and  Supplies in"
                    android:textColor="@android:color/black"
                    android:textSize="16sp" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginStart="4dp"
                    android:maxLines="1"
                    android:layout_weight="1.3"
                    android:text="(0)"
                    android:textColor="@android:color/black"
                    android:textSize="16sp"
                    android:textStyle="bold"
                    tools:ignore="RtlCompat" />

            </LinearLayout>

            <TextView
                android:id="@+id/contractor_item_address"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:maxLines="1"
                android:text="Address"
                android:textColor="@color/colorAccent"
                android:textSize="14sp" />

            <TextView
                android:id="@+id/contractor_item_phone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Contact"
                android:textColor="@color/colorAccent"
                android:textSize="14sp" />

        </LinearLayout>

    </LinearLayout>

    <ImageView
        android:id="@+id/contractor_item_show"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_marginTop="8dp"
        android:background="?attr/selectableItemBackgroundBorderless"
        android:clickable="true"
        android:contentDescription="@string/app_name"
        android:src="@drawable/common_ic_googleplayservices"
        android:tint="@color/colorAccent" />

</LinearLayout>

答案 3 :(得分:0)

您需要在水平线性布局中声明权重并将布局权重分配给内部小部件