Android以编程方式设置TextView的重力

Nat*_*ate 207 android gravity textview android-layout

我可以android:gravity="bottom|center_horizontal"在textview上使用xml来获得我想要的结果,但我需要以编程方式执行此操作.我的文本视图tablerow位于一个内容中relativelayout.

我试过了:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);
Run Code Online (Sandbox Code Playgroud)

但是,如果我理解正确,那将适用于tablerow,而不是textview?

Mar*_*ues 500

labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Run Code Online (Sandbox Code Playgroud)

另外,你在谈论引力还是关于layout_gravity?后者不适用于RelativeLayout.

  • 谢谢+1,我找到了文档,但是像往常一样它只走了一半,没有明确说明我从哪里得到重力常数(Gravity.CENTER等). (7认同)
  • 对于像我一样从 Google 来到这里的任何人,Kotlin 的方式是:```it.gravity = Gravity.CENTER_HORIZONTAL 或 Gravity.BOTTOM``` (4认同)
  • @ZooMagic它不是一个“逻辑”运算符(“||”),而是一个“位”运算符(“|”)。按位 OR 获取两个值的位并检查同一位置上的一个(或两个)位是否为 1,如果是,则将其输出为 1。例如:`0010 | 1000 = 1010`,`1010 | 0101 = 1111`,`1100 | 1101 = 1101` (2认同)

rad*_*ncy 39

这将使文本在文本视图中居中:

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)

  • 那没用."lp.gravity无法解析或不是一个字段" (4认同)
  • 我发现了这个问题.Nate正在导入android.view.ViewGroup.该类有不同的方法,不编译.你应该导入android.view.WindowManager. (4认同)

Baj*_*dda 6

我们可以在任何视图上设置布局重力,如下所示 -

myView = findViewById(R.id.myView);
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
 or
myView.setGravity(Gravity.BOTTOM);
Run Code Online (Sandbox Code Playgroud)

这与xml代码相同

<...
 android:gravity="center_vertical|right"
 ...
 .../>
Run Code Online (Sandbox Code Playgroud)

  • 布局重力与重力不同 (2认同)