如何在Java Activity中设置自定义按钮的边距?
给动态创建的Button设置边距,核心是通过对应父布局的LayoutParams来配置——不同父布局(比如LinearLayout、RelativeLayout)的LayoutParams类型不一样,以下是两种最常见的场景:
场景1:父布局是LinearLayout
直接创建LinearLayout.LayoutParams,设置边距后绑定到Button上:
Button button = new Button(All_HomeWork_List.this); button.setBackground(getDrawable(R.drawable.orange_button)); button.setTextSize(25); // 创建布局参数,指定按钮宽高(可根据需求调整为MATCH_PARENT) LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ); // 设置边距:左、上、右、下,单位为像素 btnParams.setMargins(20, 10, 20, 10); // 将参数绑定到按钮 button.setLayoutParams(btnParams); buttonLay.addView(button);
如果需要用dp适配不同屏幕,可以加个工具方法把dp转成像素:
// 工具方法:dp转像素 private int dpToPx(int dp) { float density = getResources().getDisplayMetrics().density; return Math.round(dp * density); }
调用时替换成:
btnParams.setMargins(dpToPx(16), dpToPx(8), dpToPx(16), dpToPx(8));
场景2:父布局是RelativeLayout
逻辑和LinearLayout类似,改用RelativeLayout.LayoutParams即可:
Button button = new Button(All_HomeWork_List.this); button.setBackground(getDrawable(R.drawable.orange_button)); button.setTextSize(25); RelativeLayout.LayoutParams btnParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT ); btnParams.setMargins(20, 10, 20, 10); button.setLayoutParams(btnParams); buttonLay.addView(button);
另外也可以在addView时直接传入参数,效果完全相同:
buttonLay.addView(button, btnParams);
内容的提问来源于stack exchange,提问作者rksaif66
相关产品推荐
相关产品推荐

