如果textview值超过2个字符,则一切都将向右移动

时间:2019-02-25 10:32:31

标签: android android-recyclerview

我有recyclerview,为此,我使用一个特定的视图。在该视图中,我有3个textviews和一个图像按钮。首先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>

以下是屏幕截图:

enter image description here

3 个答案:

答案 0 :(得分:2)

由于您使用的是线性布局,请尝试给出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%的屏幕宽度。我相信您可以根据要点的设计来更改重量:)

答案 1 :(得分:0)

只需将权重1设置为中间的线性布局,然后为剩下的两个布局设置wrap_content。

<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="10"

            android:textSize="25dp"
            android:textColor="#000000"
            android:layout_marginLeft="15dp"/>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight = "1"
            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="#000000"
                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="#000000"
                android:textSize="20dp"/>

        </LinearLayout>

        <ImageButton
            android:id="@+id/buses_favourites"
            android:layout_width="30dp"
            android:layout_height="30dp"

            android:layout_alignParentRight="true"/>

    </LinearLayout>

</RelativeLayout>

答案 2 :(得分:0)

您的ImageButton属性android:layout_alignParentRight="true"在线性布局中不起作用,因此置于ImageButton的LinearLayout外部。

喜欢这个,它对您来说很好。

<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>

        </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"
            android:layout_centerVertical="true"/>

    </RelativeLayout>


</RelativeLayout>

每当您使用wrap_content时,它都会将此属性用于textView

android:ellipsize="end"