【问题标题】:how to design right to left linear layout如何设计从右到左的线性布局
【发布时间】:2021-09-15 16:42:23
【问题描述】:

首先对不起我的英语语言不好!

我设计了一个布局。这是布局的一部分:

 <ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dip" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/shape_details"
        android:orientation="vertical"
        android:padding="10dip" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right" >

            <TextView
                android:id="@+id/txt_details_ostan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="right"
                android:text="Medium Text"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#0000FF" />


            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="استان"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="#AA0000" />
        </LinearLayout>

首选语言方向是从右到左。红色是主题,蓝色是将从数据库中读取的文本。

问题是文本有很多字符,当在这个布局中显示时,主题会消失,因为我的布局是“从左到右”并且文本填充了所有布局。

我搜索了很多,但找不到任何方法来更改“从右到左”的布局。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    将以下行添加到您的布局中:

    android:layoutDirection="rtl"
    android:layout_alignParentRight="true"
    

    【讨论】:

    • 如果清单支持 rtl 为 false,则 layoutDirection 不起作用
    【解决方案2】:

    尝试这样做:

    1. 将您的 LinearLayout 更改为 RelativeLayout
    2. 将主题与父级对齐
    3. 将主题文本放在主题的左侧

    这是一个例子:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:padding="5dip" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:padding="10dip" >
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="right" >
    
                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:text="استان"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#AA0000" />
    
                <TextView
                    android:id="@+id/txt_details_ostan"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right"
                    android:layout_toLeftOf="@+id/textView3"
                    android:text="This is a sample of a long message. It will not push the topic off screen."
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="#0000FF" />
    
            </RelativeLayout>
        </LinearLayout>
    </ScrollView>
    

    【讨论】:

    【解决方案3】:

    如果你来到这里,那么你不应该错过this名为flexbox的神奇解决方案。

    只需更改一个参数,您就可以从左到右排列项目,反之亦然。

    示例:

                        <com.google.android.flexbox.FlexboxLayout
                        android:paddingLeft="12dp"
                        android:paddingRight="12dp"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        app:alignContent="flex_start"
                        app:alignItems="flex_start"
    
                        app:flexWrap="wrap">
    <Item1/>
    <Item2/>
    <Item3/>
    <Item4/>
    <Item5/>
        </com.google.android.flexbox.FlexboxLayout>
    

    以上五个项目从左到右排列。 您只需要添加一行,就可以从右到左排列。 这一行是:

                            app:flexDirection="row_reverse"
    

    会是这样的:

                        <com.google.android.flexbox.FlexboxLayout
                        android:paddingLeft="12dp"
                        android:paddingRight="12dp"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        app:alignContent="flex_start"
                        app:alignItems="flex_start"
                        app:flexDirection="row_reverse"
                        app:flexWrap="wrap">
    

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 1970-01-01
      • 2014-10-24
      • 2016-03-09
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多