web-dev-qa-db-ja.com

Androidプログラムによるボタンの位置

アプリケーションにボタンがあります。プログラムで位置を変えたい。次のようにXMLでボタンを作成しました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    >

<Button Android:text="@+id/Button01" 
        Android:id="@+id/Button01" 
        Android:layout_width="wrap_content" 
        Android:layout_height="wrap_content"
        Android:layout_marginLeft="50px"
        Android:layout_marginTop="10px"
        >
</Button>
</LinearLayout>

ボタンの位置を左から100pxに設定したいとします(layout_marginLeft = "100px"として)。プログラムでそれを行うにはどうすればよいですか?問題を解決するのを手伝ってください。

9
Paresh Mayani

ルーク、

RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

rel_btn.leftMargin = myXPosition;
rel_btn.topMargin = myYPosition;
rel_btn.width = buttonW;
rel_btn.height = buttonH;

myButton.setLayoutParams(rel_btn);
9
Leo

ビューを取得してJavaオブジェクトに変換してから、setPaddingを呼び出す必要があります。

このようなものはうまくいくでしょう

Button myBtn;
myBtn = (Button) findViewById(R.id.Button01);
myBtn.setPadding(0,100,0,0);

詳細はこちら: https://developer.Android.com/reference/Android/view/ViewGroup.MarginLayoutParams.html

6
Pentium10

BtnでsetMargin()を使用することはできません。LayoutParamsで使用してから、btn.setLayoutParams(params);を使用してください。

2
Arun

Kotlinを使用すると、以下を使用できます。

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val btnTag = Button(this).apply {
            text = "Done"
            setOnClickListener { finish() }
        }

        // btnTag.setOnClickListener { this.finish() }

        val lp = RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT).apply {
            addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
            addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
        }

        main_layout.addView(btnTag, lp)
}

注:レイアウトはRelativeLayoutである必要があります

0
Hasan A Yousef