我正在使用 FrameLayout 在屏幕上显示(按需)一些文本。我希望文本位于某个位置,所以我认为 setGravity() 可以完成这项工作......但是不,它似乎对文本的去向没有任何影响(而像 ImageView 这样的其他对象甚至没有这种方法)。
那么首先, TextView.setGravity()到底是做什么用的?(编辑:我现在更好地理解了这一点,谢谢!尽管问题的以下部分仍然不清楚。)
其次,似乎以这种方式更新 FrameLayout 的唯一方法是使用您想要的设置创建一个新的 FrameLayout.LayoutParams 对象,然后使用 setLayoutParams() 方法来应用它。(这似乎会自动更新视图,因此是否需要 requestLayout() 调用?)是否有更简单/更直接的方法来为 FrameLayout 实现这一点......比如说,无需像我现在所做的那样创建新的 LayoutParams 对象?
谢谢!作为参考,下面是一个(工作)代码片段,显示了我如何设置这个 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);