2

ボタンの位置を動的に設定することについて多くの質問がありましたが、ボタンの位置を画面の中央に変更したいだけです。私のレイアウトは RelativeLayout です。

更新しました:

最初に、myButton は XML で次のように位置が設定されています。

<Button
        android:id="@+id/myButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="Menu" />

どんな提案でも大歓迎です

4

5 に答える 5

4

以下の例を参照してください (ボタンをクリックすると、中央に移動します)。

activity_main.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Button
        android:id="@+id/my_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="Menu" />

</RelativeLayout>

MainActivity.java :

public class MainActivity extends Activity {
    private View mView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mView = findViewById(R.id.my_view);
        mView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ViewGroup.LayoutParams vg_lp = mView.getLayoutParams();

                // Make sure we are in RelativeLayout
                if (vg_lp instanceof RelativeLayout.LayoutParams) {
                    RelativeLayout.LayoutParams rl_lp = new RelativeLayout.LayoutParams(vg_lp);
                    rl_lp.addRule(RelativeLayout.CENTER_IN_PARENT);
                    mView.setLayoutParams(rl_lp);
                }
            }
        });
    }
}
于 2012-07-31T12:28:49.083 に答える
0

これを試して、

RelativeLayout my_layout = new RelativeLayout(this);
my_layout.setId(some_value);
Button my_btn = new Button(this);
RelativeLayout.LayoutParams my_params = new RelativeLayout.LayoutParams(btn_height,btn_width);
my_params.addRule(RelativeLayout.CENTER_IN_PARENT,my_layout.getId());
my_layout.addView(my_btn,my_params);
于 2012-07-31T12:12:34.480 に答える
0

これを試してください:

   RelativeLayout RL = (RelativeLayout)findViewById(R.id.relative_layout);
   RL.gravity(Gravity.CENTER);

これにより、RL のすべてのサブビューが中心になります。

   Button anyButton = new Button(this);
   RL.addSubview(anyButton);//this genereted button will be in center as well
于 2012-07-31T12:09:40.477 に答える
0

xml ファイルの中央に配置するコンポーネントに次の 2 行を追加します。

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
于 2012-07-31T12:10:09.190 に答える
0

試す:

      ......
      RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) button.getLayoutParams();
      layoutParams.leftMargin = parentLayout.getWidth()/2;
      layoutParams.topMargin = parentLayout.getHeight()/2;
      button.setLayoutParams(layoutParams);
      ...... 
于 2012-07-31T12:08:55.100 に答える