Android layout_gravity 对于 Java 中的 TextView
Android layout_gravity for TextView in Java
我想更改 TextView 的 layout gravity。
通过 XML,您可以通过 android:layout_gravity="value"
.
我知道为了改变 gravity 本身,通过 XML 你会做 android:gravity="value"
,而在 Java 你会做 textview.setGravity(Gravity.VALUE);
但遗憾的是,没有 textview.setLayoutGravity(VALUE);
,所以我被困住了。
谢谢!
在线性布局中使用:
android:layout_gravity="value"
在相对布局中使用属性:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
根据您的要求
以编程方式设置 layout_gravity
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
youttextview.setLayoutParams(params);
注意:layout_gravity不适用于相对布局
您需要使用正确的子class。例如,如果您的 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
---------------------------------------------
例二:
<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 |
| |
| |
| |
| |
| |
| |
| |
| |
---------------------------------------------
TextView 被 HorizontalScrollView 包围,而 HorizontalScrollView 又被 ScrollView 包围。
我发现没有任何效果,直到我在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);
它解决了我的问题。
非常感谢大家!
我想更改 TextView 的 layout gravity。
通过 XML,您可以通过 android:layout_gravity="value"
.
我知道为了改变 gravity 本身,通过 XML 你会做 android:gravity="value"
,而在 Java 你会做 textview.setGravity(Gravity.VALUE);
但遗憾的是,没有 textview.setLayoutGravity(VALUE);
,所以我被困住了。
谢谢!
在线性布局中使用:
android:layout_gravity="value"
在相对布局中使用属性:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
根据您的要求
以编程方式设置 layout_gravity
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
youttextview.setLayoutParams(params);
注意:layout_gravity不适用于相对布局
您需要使用正确的子class。例如,如果您的 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
---------------------------------------------
例二:
<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 |
| |
| |
| |
| |
| |
| |
| |
| |
---------------------------------------------
TextView 被 HorizontalScrollView 包围,而 HorizontalScrollView 又被 ScrollView 包围。
我发现没有任何效果,直到我在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);
它解决了我的问题。
非常感谢大家!