【问题标题】:Right align text in android TextView在android TextView中右对齐文本
【发布时间】:2012-02-16 15:42:10
【问题描述】:

我的应用程序中有一个TextView。我想将其中的文本向右对齐。我尝试添加:

android:gravity="right"

但这对我不起作用。

我可能做错了什么?

【问题讨论】:

    标签: android alignment textview


    【解决方案1】:

    我认为您正在这样做:android:layout_width = "wrap_content"
    如果是这种情况,请执行以下操作:android:layout_width = "match_parent"

    【讨论】:

    • @Bishan fill 将填充剩余的空间,match 将其设置为等于父级的宽度
    • 其实fill_parent和match_parent是一回事。名称已更改为 match_parent,因为显然 fill_parent 使人们感到困惑。
    • 这个答案没有意义...
    【解决方案2】:

    一般来说,android:gravity="right"android:layout_gravity="right" 不同。

    第一个影响文本本身在视图中的位置,因此如果您希望它右对齐,那么layout_width= 应该是"fill_parent""match_parent"

    第二个影响视图在其父视图内的位置,换句话说 - 在父视图内对齐对象本身(编辑框或文本视图)。

    【讨论】:

      【解决方案3】:

      更好的解决方案是最简单的解决方案,并且对代码行为的修改更少

      如果您仅使用 TextView 上的 2 个属性就可以解决此问题怎么办?

      而不是需要更改您的 LinearLayout 属性,这可能会改变 LinearLayout 孩子的行为?

      使用这种方式,您不需要更改LinearLayout 的属性和行为,您只需将以下两个属性添加到您的目标TextView

      android:gravity="right"
      android:textAlignment="gravity"
      

      有什么比只改变你的目标来解决你的解决方案而不是有机会在未来引起另一个问题,修改你的目标父亲更好?想一想:)

      【讨论】:

      • 我收到一条错误消息,提示在 android 包中找不到资源“textAlignment”的资源标识符。
      • 您确定您正在访问TextView 属性? - 您可以从这里的参考中查看属性:developer.android.com/reference/android/view/…
      • textAlignment 在 API 级别 17 (Android 4.2) 中添加。您的模拟器/设备需要运行 4.2+ 才能正常工作。
      • 我曾尝试在 Android 4.1.2 中使用此 textAlignment 属性并收到错误“未找到属性 'textAlignment' 的资源标识符”。我在这里找到了这个错误的答案stackoverflow.com/a/20176191/723507。你怎么能在 4.0.3 中使用它?
      【解决方案4】:

      android:layout_gravity 用于将文本视图相对于父布局对齐。 android:gravity 用于对齐文本视图内的文本。

      您确定要尝试将文本视图中的文本向右对齐,还是要将文本视图本身相对于父布局向右移动,或者您是否要同时实现两者

      【讨论】:

      • 我正在尝试将文本视图中的文本向右对齐
      【解决方案5】:

      如果有人仍然需要

      android:gravity="end"
      

      【讨论】:

      • 这是干什么用的?
      • 在 LTR 中,这会将文本向右对齐,在 RTL 中,向左对齐
      【解决方案6】:

      以下代码sn-p:

      android:textAlignment="textEnd"
      android:layout_gravity="end"
      

      非常适合我

      【讨论】:

        【解决方案7】:

        确保您没有使用android:layout_width="wrap_content",如果是这样,那么它将无法设置重力,因为您没有足够的空间来对齐文本。而是使用android:layout_width="fill_parent"

        【讨论】:

          【解决方案8】:
          android:gravity="right"
          

          它基本上用于线性布局,因此您必须将 TextView 或 EditText 的宽度设置为

          android:layout_width = "match_parent"
          

          当您在相对布局中工作时,请使用

          android:layout_alignParentRight="true"
          

          【讨论】:

            【解决方案9】:

            制作 (LinearLayout) android:layout_width="match_parent" 和 TextView 的 android:layout_gravity="right"

            【讨论】:

              【解决方案10】:

              如果在RelativeLayout,你可以使用android:layout_toRightOf="@id/<id_of_desired_item>"

              或者

              如果您想与设备的right 角对齐,则放置android:layout_alignParentRight="true"

              【讨论】:

                【解决方案11】:

                以下对我有用:

                <TextView
                    android:id="@+id/tv_username"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Sarah" />
                
                <TextView
                    android:id="@+id/tv_distance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBottom="@+id/tv_username"
                    android:layout_alignParentEnd="true"
                    android:layout_toEndOf="@+id/tv_username"
                    android:text="San Marco"
                    android:textAlignment="viewEnd" />
                

                请注意第二个TextView的android:layout_alignParentEndandroid:textAlignment设置。

                【讨论】:

                  【解决方案12】:

                  让我用 WEB 来解释重力的概念,因为很多开发者都知道这一点。

                  android_layout_gravity 行为 float:left|right|top|bottom

                  android_gravitytext_align:centre|left|right 工作

                  在 Android 中 float 是 android_layout_gravity 和 text_align: 是 android_gravity。

                  并且 android_layout_gravity 相对于父级应用。其中 android_gravity 适用于其子内容或内部内容。

                  注意 android_gravity 仅在其 View 为 match_parent 时有效(当它有空间居中时)。

                  【讨论】:

                    【解决方案13】:

                    你可以使用:

                        android:layout_alignParentRight="true"
                        android:layout_centerVertical="true"
                    

                    【讨论】:

                      【解决方案14】:

                      这应该达到目的

                      android:textAlignment="textStart"

                      【讨论】:

                        【解决方案15】:

                        在我的例子中,我使用Relative Layout 作为emptyString

                        为此苦苦挣扎了一个小时。只有这对我有用:

                        android:layout_toRightOf="@id/welcome"
                        android:layout_toEndOf="@id/welcome"
                        android:layout_alignBaseline="@id/welcome"
                        

                        layout_toRightOflayout_toEndOf 都可以,但为了更好地支持它,我都使用了。

                        为了更清楚:

                        这就是我想要做的:

                        这是模拟器的输出

                        布局:

                        <TextView
                            android:id="@+id/welcome"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="16dp"
                            android:layout_marginTop="16dp"
                            android:text="Welcome "
                            android:textSize="16sp" />
                        <TextView
                            android:id="@+id/username"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_alignBaseline="@id/welcome"
                            android:layout_toRightOf="@id/welcome"
                            android:text="@string/emptyString"
                            android:textSize="16sp" />
                        

                        请注意:

                        1. android:layout_width="wrap_content" 工作
                        2. Gravity 未使用

                        【讨论】:

                          【解决方案16】:

                          我也遇到了同样的问题,并认为问题正在发生,因为 TextView 的 layout_width 有 wrap_content。你需要 layout_width 作为 match_parent 和 android:gravity = "gravity"

                          【讨论】:

                            【解决方案17】:
                            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                 android:layout_width="fill_parent"
                                 android:layout_height="fill_parent">
                            
                              <TextView
                                android:id="@+id/tct_postpone_hour"
                                android:layout_width="match_parent"
                                android:layout_height="50dp"
                                android:layout_centerHorizontal="true"
                                android:layout_centerVertical="true"
                                android:layout_gravity="center"
                                android:gravity="center_vertical|center_horizontal"
                                android:text="1"
                                android:textSize="24dp" />
                            </RelativeLayout>
                            

                            使第一个在水平和垂直中心对齐。

                            【讨论】:

                              【解决方案18】:

                              尝试将android:gravity="center" 添加到TextView

                              【讨论】:

                                【解决方案19】:

                                在我的例子中,我使用了属性“layout_alignRight”,在文本中:

                                android:layout_alignRight="@+id/myComponentId"
                                

                                如果您想添加一些右边距,只需将属性“Layout_Margin Right”设置为“20dp”,例如,在文本中:

                                android:layout_marginRight="20dp"
                                

                                【讨论】:

                                  【解决方案20】:

                                  Android API 26+ 中的 TextView 支持对齐方式

                                  <TextView ...
                                      ... android:justificationMode="inter_word" />
                                  

                                  默认值为无。

                                  Android TextView Docs

                                  Question on Android TextView Justify Text

                                  【讨论】:

                                    猜你喜欢
                                    • 2013-08-25
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2011-08-07
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2021-05-01
                                    相关资源
                                    最近更新 更多