検索

ホームページ  >  に質問  >  本文

android - 如何通过代码设置TextView的Margin参数?

通过文档,查到TextView下有这么个方法

setLayoutParams(ViewGroup.LayoutParams params)

但是ViewGroup.LayoutParams这个东西,并没有setMargins方法,LinearLayout.LayoutParams才有,请教下该如何写?

ringa_leeringa_lee2772日前628

全員に返信(3)返信します

  • 黄舟

    黄舟2017-04-17 14:57:10

    マニュアルには次のように書かれています: public void setLayoutParams (ViewGroup.LayoutParams params), "このメソッドは、親ビューにいくつかのパラメーターを提供し、親ビュー内のビューの位置 (またはレイアウト) を指定します。 。 』

    このビューに関連付けられたレイアウト パラメータを設定します。これらは、このビューの親に、どのように配置するかを指定するパラメータを提供します。

    TextView (または他の View) のマージン属性を動的に変更する必要がある場合 (android:layout_marginTopandroid:layout_marginBottomandroid:layout_marginLeftandroid:layout_marginRight)、レイアウト内でビューを定義するのではなく、コードを通じてこのビューを動的に追加することをお勧めします。

    親ビューが LinearLayout の場合は、textView.setLayoutParams(params) を直接呼び出して、textView を LinearLayout に追加できます。

    LinearLayout レイアウト = (LinearLayout) findViewById(R.id.layoutView);
    
    int 左、上、右、下;
    左 = 上 = 右 = 下 = 64;
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT、LinearLayout.LayoutParams.WRAP_CONTENT);
    params.setMargins(左、上、右、下);
    
    TextView textView = 新しい TextView(this);
    textView.setText("ラベル");
    textView.setLayoutParams(params);
    
    layout.addView(textView);

    親ビューが RelativeLayout または FrameLayout の場合、上記の方法は無効です。解決するには、新しい LinearLayout を作成し、それに textView を追加します。この LinearLayout を親ビューに:

    FrameLayout レイアウト = (FrameLayout) findViewById(R.id.layoutView);
    
    int 左、上、右、下;
    左 = 上 = 右 = 下 = 64;
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT、LinearLayout.LayoutParams.WRAP_CONTENT);
    params.setMargins(左、上、右、下);
    
    TextView textView = 新しい TextView(this);
    textView.setText("ラベル");
    textView.setLayoutParams(params);
    
    LinearLayout ll = new LinearLayout(this); // + 行を追加します。
    ll.setOrientation(LinearLayout.VERTICAL); // + 行を追加します
    ll.addView(textView); // + 行を追加します
       
    //layout.addView(textView) // - 行を削除します。
    layout.addView(ll); // + 行を追加します 

    上記のコードはテスト済みです。

    返事
    0
  • 阿神

    阿神2017-04-17 14:57:10

    ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

    Margin を設定できる ViewGroup のすべての LayoutParams は、基本的に MarginLayoutParams から取得されます。 LayoutParams のサブクラス。getLayoutParams()

    を渡すときに、強制的に ViewGroup.MarginLayoutParams に変換できます。

    返事
    0
  • 黄舟

    黄舟2017-04-17 14:57:10

    Layoutparams をリセットするだけです

    返事
    0
  • キャンセル返事