我想更改 TextView 的布局重力。
通过XML,您可以通过android:layout_gravity="value"
执行此操作
我知道,为了改变 gravity 本身,通过XML,你做android:gravity="value"
,而用Java做textview.setGravity(Gravity.VALUE);
但遗憾的是,没有textview.setLayoutGravity(VALUE);
,所以我被卡住了
谢谢!
答案 0 :(得分:3)
您需要使用正确的子类。例如,如果您的TextView
位于FrameLayout
,则需要:
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) textView.getLayoutParams();
params.gravity = Gravity.CENTER;
textView.setLayoutParams(params);
请注意layout_gravity
或setLayoutGravity
将当前元素的重力设置为其父级,gravity
或setGravity
为元素中的当前元素内容设置重力。有关详细信息,请参阅下图。
示例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 |
| |
| |
| |
| |
| |
| |
| |
| |
---------------------------------------------
答案 1 :(得分:2)
以编程方式设置layout_gravity
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
youttextview.setLayoutParams(params);
注意:layout_gravity不适用于相对布局
答案 2 :(得分:0)
在线性布局中使用:
android:layout_gravity="value"
在相对布局中使用属性:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
根据您的要求
答案 3 :(得分:0)
TextView被一个被ScrollView包围的HorizontalScrollView包围 我发现没有任何效果,直到我在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);
它解决了我的问题。
非常感谢大家!