Android 无法在线性布局中均匀对齐项目

Android 无法在线性布局中均匀对齐项目,android,android-layout,android-recyclerview,Android,Android Layout,Android Recyclerview,在我的应用程序中,我有一个RecyclerView item.xml,我试图将所有项目与线性布局对齐,但这里的问题是,当我将TextView的宽度设置为wrap_内容时,如果设置的文本太大,它会将布局中的其他项目推出,有时会使它们太小,有时甚至完全从布局中推出这是我正在使用的XML代码,如有任何帮助,将不胜感激 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com

在我的应用程序中,我有一个RecyclerView item.xml,我试图将所有项目与线性布局对齐,但这里的问题是,当我将TextView的宽度设置为wrap_内容时,如果设置的文本太大,它会将布局中的其他项目推出,有时会使它们太小,有时甚至完全从布局中推出这是我正在使用的XML代码,如有任何帮助,将不胜感激

<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_marginTop="8dp"
    android:layout_marginBottom="8dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/songitemly"
        android:weightSum="100"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        >

        <ImageView
            android:id="@+id/imgscov"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_marginLeft="15dp"
            android:scaleType="fitXY"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp" />
<LinearLayout
    android:layout_width="wrap_content"
    android:orientation="vertical"
    android:layout_height="wrap_content">
        <TextView
            android:id="@+id/sname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/imgscov"
            android:gravity="center"
            android:singleLine="true"
            android:textColor="#FCFAFA"
            android:textSize="16dp" />
    <TextView
        android:id="@+id/sartist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:singleLine="true"
        android:textColor="#D3D1D1"
        tools:ignore="MissingConstraints" />
    </LinearLayout>

        <com.airbnb.lottie.LottieAnimationView
            android:id="@+id/playinganim"
            android:layout_marginTop="5dp"
            android:layout_width="25dp"
            android:layout_weight="20"
            android:visibility="invisible"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"
            app:lottie_fileName="playing.json"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_toRightOf="@id/sname"
            android:layout_height="25dp"
            />
        <ImageView
            android:id="@+id/imgmenu"
            android:layout_marginTop="5dp"
            android:layout_weight="10"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_toRightOf="@+id/playinganim"
            android:src="@drawable/ic_dots_vertical_black_48dp"
            android:layout_width="25dp"
            android:layout_height="25dp" />
    </LinearLayout>

</android.support.constraint.ConstraintLayout>
这是我将宽度和高度设置为0dp后的代码:

<LinearLayout
        android:id="@+id/songitemly"
        android:weightSum="100"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        tools:ignore="MissingConstraints">

        <ImageView
            android:id="@+id/imgscov"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_marginLeft="15dp"
            android:scaleType="fitXY"
            android:layout_marginTop="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp" />
<LinearLayout
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="0dp">
        <TextView
            android:id="@+id/sname"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:singleLine="true"
            android:ellipsize="end"
            android:maxLines="1"
            android:textColor="#FCFAFA"
            android:textSize="16dp" />
    <TextView
        android:id="@+id/sartist"
        android:layout_width="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:singleLine="true"
        android:textColor="#D3D1D1"
        tools:ignore="MissingConstraints" />
    </LinearLayout>

        <com.airbnb.lottie.LottieAnimationView
            android:id="@+id/playinganim"
            android:layout_marginTop="5dp"
            android:layout_width="25dp"
            android:layout_weight="20"
            android:visibility="invisible"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"
            app:lottie_fileName="playing.json"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_toRightOf="@id/sname"
            android:layout_height="25dp"
            />
        <ImageView
            android:id="@+id/imgmenu"
            android:layout_marginTop="5dp"
            android:layout_weight="10"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_toRightOf="@+id/playinganim"
            android:src="@drawable/ic_dots_vertical_black_48dp"
            android:layout_width="25dp"
            android:layout_height="25dp" />
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

根据LinearLayout的垂直/水平方向,可以将高度/宽度分别设置为0dp,并将其权重设置为与约束匹配,即

android:layout_width = "0dp"
android:layout_weight = "1.0"
此外,当文本过长时,可以使用以下选项显示省略号:

android:ellipsize="end"
android:maxLines="1"
试试这个:

<?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"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp"
    android:background="@color/colorPrimary">

    <LinearLayout
        android:id="@+id/songitemly"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:weightSum="100">

        <ImageView
            android:id="@+id/imgscov"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_marginStart="15dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:layout_marginBottom="5dp"
            android:contentDescription="@string/app_name"
            android:scaleType="fitXY"
            android:src="@drawable/a" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_toStartOf="@id/buttons"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/sname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:gravity="center"
                    android:singleLine="true"
                    android:textColor="#FCFAFA"
                    android:textSize="16sp"
                    tools:text="Test" />

                <TextView
                    android:id="@+id/sartist"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:gravity="center"
                    android:singleLine="true"
                    android:textColor="#D3D1D1"
                    tools:ignore="MissingConstraints"
                    tools:text="Test" />
            </LinearLayout>


            <LinearLayout
                android:id="@+id/buttons"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true">

                <com.airbnb.lottie.LottieAnimationView
                    android:id="@+id/playinganim"
                    android:layout_width="25dp"
                    android:layout_height="25dp"
                    android:layout_marginStart="5dp"
                    android:layout_marginTop="5dp"
                    android:layout_marginEnd="10dp"
                    android:layout_weight="20"
                    android:visibility="invisible"
                    app:lottie_autoPlay="true"
                    app:lottie_fileName="playing.json"
                    app:lottie_loop="true" />

                <ImageView
                    android:id="@+id/imgmenu"
                    android:layout_width="25dp"
                    android:layout_height="25dp"
                    android:layout_marginStart="5dp"
                    android:layout_marginTop="5dp"
                    android:layout_marginEnd="10dp"
                    android:layout_weight="10"
                    app:srcCompat="@drawable/a" />

            </LinearLayout>
        </RelativeLayout>
    </LinearLayout>
</android.support.constraint.ConstraintLayout>

也使用权重分配权重,但如果设置的文本太长,它会将“我的其他项目”从版面中挤出,并且即使大小设置为25dp,大小也会更改为太小,如5dp。您的预期输出是什么?当使用权重时,水平版面宽度必须为0dp,垂直版面高度必须为00dp@Piyush将宽度设置为0dp使我的文本视图不可见无法工作将宽度设置为0dp后文本视图不可见如果线性布局方向是水平的,请将宽度设置为0dp,否则如果方向是垂直的,请将高度设置为0dp如果有问题请离开提交!还有问题吗?没有,我关于这个问题的问题已经解决了,谢谢