アプリケーションにボタンがあります。プログラムで位置を変えたい。次のように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"として)。プログラムでそれを行うにはどうすればよいですか?問題を解決するのを手伝ってください。
ルーク、
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);
ビューを取得して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
BtnでsetMargin()
を使用することはできません。LayoutParamsで使用してから、btn.setLayoutParams(params);
を使用してください。
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
である必要があります