FrameLayout を使用して (オンデマンドで) 画面にテキストを表示しています。テキストを特定の場所に配置したいので、 setGravity() でうまくいくと思いました...しかし、いいえ、テキストの移動先には何の影響もないようです(ImageViewのような他のオブジェクトにはありません)この方法)。
まず、TextView.setGravity()は正確には何に使用されるのでしょうか。(編集:私は今これをよりよく理解しています、ありがとう!ただし、質問の次の部分についてはまだ明確ではありません。)
次に、この方法で FrameLayout を更新する唯一の方法は、必要な設定で新しい FrameLayout.LayoutParams オブジェクトを作成し、それを setLayoutParams() メソッドを使用して適用することです。(これはビューを自動的に更新するように見えるので、requestLayout() 呼び出しが必要ですか?)そして、FrameLayout でこれを達成するためのより簡単で簡単な方法はありますか? ?
ありがとう!参考までに、この 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);