[英]How to set Margins for buttons Programmatically in Android?
我以编程方式在GridLayout中添加了50多个按钮,其中ScrollView和LinearLayout作为GridLayout Parents。 我需要为每个按钮设置边距。 我尝试了setMargins()方法。 但是,它不起作用。 谁能帮帮我吗?
XML
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"
android:layout_marginBottom="10dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">
<GridLayout
android:id="@+id/levelsGridLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="5"
android:rowCount="10">
</GridLayout>
</ScrollView>
</LinearLayout>
创建按钮的代码。
FrameLayout.LayoutParams params = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT
);
for (int i = 1; i <= 100; i++) {
Button button = new Button(this);
button.setText(Integer.toString(i));
id = getResources().getIdentifier("button" + i, "id", getPackageName());
button.setId(id);
button.setTag(Integer.toString(i));
button.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
button.setTextColor(Color.WHITE);
button.setBackgroundResource(R.drawable.levels_button_background);
params.setMargins(5, 5, 5, 5);
button.setLayoutParams(params);
allLevelButtons.add(button);
levelsGridLayout.addView(button);
button.getLayoutParams().width = oneButtonWidth;
}
添加视图时,需要使用2个参数addView(View, LayoutParameters)
版本添加它。 否则,您不会获得刚刚设置的参数,而是会获得一个新的params对象。 另外,您需要在循环内移动params对象的创建,每个对象都应该有自己的对象,或者,如果更改它,您将得到怪异的结果(它们都将改变)。
当然,您可能应该将GridLayout或RecyclerView与GridLayoutManager一起使用,而不是一个接一个地添加视图,尤其是当您有六个以上的视图时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.