【发布时间】:2011-11-24 04:06:00
【问题描述】:
我正在使用 FrameLayout 在屏幕上显示(按需)一些文本。我希望文本位于某个位置,所以我认为 setGravity() 可以完成这项工作......但是不,它似乎对文本的去向没有任何影响(而像 ImageView 这样的其他对象甚至没有这个方法)。
首先, TextView.setGravity() 究竟是做什么用的? (编辑:我现在明白了很多,谢谢!但问题的以下部分仍然不清楚。)
其次,以这种方式更新 FrameLayout 的唯一方法似乎是使用您想要的设置创建一个新的 FrameLayout.LayoutParams 对象,然后使用 setLayoutParams() 方法来应用它。 (这似乎会自动更新视图,所以是否需要 requestLayout() 调用?) 还有一种更简单/更直接的方法可以为 FrameLayout 实现这一点......比如说,无需创建新的 LayoutParams像我现在这样反对?
谢谢!作为参考,下面是一个(工作)代码 sn-p,显示了我如何设置这个 FrameLayout 和 TextView。
FrameLayout fl1 = new FrameLayout(this);
FrameLayout.LayoutParams flp1 = new FrameLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
fl1.setId(9001);
fl1.setLayoutParams(flp1);
.....
tv1 = new TextView(this);
FrameLayout.LayoutParams tvp1 = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
(Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM));
tv1.setId(9006);
tv1.setLayoutParams(tvp1); // This works
tv1.setBackgroundColor(Color.GRAY);
tv1.setTextColor(Color.BLACK);
tv1.setText("Dynamic layouts ftw!");
tv1.setGravity(Gravity.CENTER); // This does NOT work
.....
fl1.addView(tv1);
【问题讨论】:
标签: android textview layoutparams