【问题标题】:Android layout_gravity for TextView in JavaJava中TextView的Android layout_gravity
【发布时间】:2017-05-03 02:47:45
【问题描述】:

我想更改 TextView布局重力
通过 XML,您可以通过 android:layout_gravity="value" 执行此操作。
我知道为了改变 gravity 本身,通过 XML 你会做android:gravity="value",而在 Java 中你会做textview.setGravity(Gravity.VALUE);
但遗憾的是,没有textview.setLayoutGravity(VALUE);,所以我被困住了。
谢谢!

【问题讨论】:

    标签: android layout-gravity


    【解决方案1】:

    您需要使用正确的子类。例如,如果您的 TextViewFrameLayout 中,您需要:

    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) textView.getLayoutParams();
    params.gravity = Gravity.CENTER;
    textView.setLayoutParams(params);
    

    请注意,layout_gravitysetLayoutGravity 在其父元素中设置当前元素的重力,gravitysetGravity 为元素内的当前元素内容设置重力。详情请参阅下图。

    示例 1:

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp">
    
        <TextView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:text="Some Text" />
    
    </FrameLayout>
    
    ---------------------------------------------
    |Some Text                                  |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    ---------------------------------------------
    

    示例 2:

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp">
    
        <TextView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:text="Some Text" />
    
    </FrameLayout>
    
    ---------------------------------------------
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |            Some Text                      |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    ---------------------------------------------
    

    示例 3:

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp">
    
        <TextView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="Some Text" />
    
    </FrameLayout>
    
    ---------------------------------------------
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                 Some Text                 |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    ---------------------------------------------
    

    示例 4:

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="Some Text" />
    
    </FrameLayout>
    
    ---------------------------------------------
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                 Some Text                 |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    ---------------------------------------------
    

    示例 5:

    <FrameLayout
        android:layout_width="400dp"
        android:layout_height="400dp">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Some Text" />
    
    </FrameLayout>
    
    ---------------------------------------------
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                 Some Text                 |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    |                                           |
    ---------------------------------------------
    

    【讨论】:

    • 非常感谢!你的回答结合我的回答给了我解决方案!
    【解决方案2】:

    以编程方式设置 layout_gravity

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.gravity = Gravity.CENTER;
    youttextview.setLayoutParams(params);   
    

    注意:layout_gravity 不适用于相对布局

    【讨论】:

    • TextView的父布局是相对布局。我该怎么办?
    • 查看 Redman 的相对布局答案,如果您想以编程方式添加此内容,请使用 addRule 方法,如 layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
    • 我错了。 TextView 的父级是相对布局,嵌套在框架布局中。
    【解决方案3】:

    在线性布局中使用:

    android:layout_gravity="value"
    

    在相对布局中使用属性:

    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" 
    android:layout_centerInParent="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    

    根据您的要求

    【讨论】:

    • 框架布局怎么样?
    • 你可以使用重力作为框架
    【解决方案4】:

    TextView 被一个被 ScrollView 包围的 Horizo​​ntalScrollView 包围。
    我发现没有任何效果,直到我在 XML 文件中设置:

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent" <!-- The value was "wrap_content" before, hence couldn't work -->
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/submit"
        android:visibility="visible">
        <!-- Some more code -->
    

    后来,我就简单用了:

    textview.setGravity(Gravity.LEFT);
    textview.setTextDirection(View.TEXT_DIRECTION_LTR);
    

    它解决了我的问题。

    非常感谢大家!

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      相关资源
      最近更新 更多