对于我的应用程序,我想添加按钮到一个有背景的线性布局编程,使它看起来更好。作为背景,我使用了一个可绘制的。可拉伸的定义为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
<corners
android:bottomRightRadius="24dp"
android:bottomLeftRadius="24dp"
android:topRightRadius="24dp"
android:topLeftRadius="24dp"/>
</shape>
按钮的编程定义如下:
//make new button
Button b = new Button(this);
b.setText(someText);
b.setId(id);
b.setAllCaps(false);
b.setTextColor(getResources().getColor(R.color.textOnButton));
b.setBackground(drawable);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
doAction(v);
}
});
//setParameters of Linearlayout
LinearLayout linear = findViewById(R.id.linearLayout);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, BUTTON_HEIGHT);
params.setMargins(LEFT_MARGIN_BUTTON, TOP_MARGIN_BUTTON,RIGHT_MARGIN_BUTTON,DOWN_MARGIN_BUTTON);
linear.setOrientation(LinearLayout.VERTICAL);
//add button to linearlayout
linear.addView(b, params);
但是,如果我用这个可绘制的按钮作为背景,它将显示为:
中间的白色乱七八糟的文字应该是这样的:
理想情况下,我想把按钮的高度改为系统默认的textsize加上一些边距。有办法解决这个问题吗?
2条答案
按热度按时间z9zf31ra1#
符合此目的的另一种方法是使用:
w3nuxt5m2#
用途:
在你的情况下,你也可以使用一个简单的
MaterialButton
: