首页 > 解决方案 > 如果 textview 值超过 2 个字符,则一切都向右移动

问题描述

我有recyclerview,为此,我使用了一个特定的视图。在那个视图中,我有 3textviews和一个图像按钮。首先textview给我看数字。其他一些虚拟文本。当我的数字超过 10(2 个字符)时,除数字外的所有内容都会向右移动。我该如何处理?

这是我的xml文件:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="70dp">

        <LinearLayout
            android:id="@+id/linlay"
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:orientation="horizontal"
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/buses_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="1"
                android:textSize="25dp"
                android:textColor="@color/gradStop"
                android:layout_marginLeft="15dp"/>

            <LinearLayout
                android:layout_width="300dp"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/buses_route_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="30dp"
                    android:text="Bus Route"
                    android:textColor="@color/gradStart"
                    android:textSize="20dp"/>

                <TextView
                    android:id="@+id/buses_cycle_duration"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="30dp"
                    android:text="Duration"
                    android:textColor="@color/gradStop"
                    android:textSize="20dp"/>

            </LinearLayout>

            <ImageButton
                android:id="@+id/buses_favourites"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/ic_favorite_border_black_24dp"
                android:background="@color/transparent"
                android:layout_alignParentRight="true"/>

        </LinearLayout>

    </RelativeLayout>


</RelativeLayout>

这是屏幕截图:

在此处输入图像描述

标签: androidandroid-recyclerview

解决方案


尝试给予,layout_weight因为您使用的是线性布局

    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="70dp">

        <LinearLayout
            android:id="@+id/linlay"
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:orientation="horizontal"
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/buses_number"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="1"
                android:layout_weight = "0.3"
                android:textSize="25dp"
                android:textColor="@color/gradStop"
                android:layout_marginLeft="15dp"/>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight = "0.6"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/buses_route_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="30dp"
                    android:text="Bus Route"
                    android:textColor="@color/gradStart"
                    android:textSize="20dp"/>

                <TextView
                    android:id="@+id/buses_cycle_duration"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="30dp"
                    android:text="Duration"
                    android:textColor="@color/gradStop"
                    android:textSize="20dp"/>

            </LinearLayout>

            <ImageButton
                android:id="@+id/buses_favourites"
                android:layout_width="0dp"
                android:layout_weight = "0.1"
                android:layout_height="30dp"
                android:src="@drawable/ic_favorite_border_black_24dp"
                android:background="@color/transparent"
                android:layout_alignParentRight="true"/>

        </LinearLayout>

    </RelativeLayout>


</RelativeLayout>

如您所见,TextView 将占用 30% 的屏幕宽度空间,Other (LinearLayout) 将占用 60% 的空间,ImageView 将占用 10% 的空间。我相信你可以根据你的设计改变重量,因为你得到了要点:)


推荐阅读