android按钮drawable不适合文本

sg3maiej  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(348)

对于我的应用程序,我想添加按钮到一个有背景的线性布局编程,使它看起来更好。作为背景,我使用了一个可绘制的。可拉伸的定义为:

<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加上一些边距。有办法解决这个问题吗?

z9zf31ra

z9zf31ra1#

符合此目的的另一种方法是使用:

//first acquire the default text height
int textSize = (int) new Button(this).getTextSize();

//then set the height of the layout to this default text height plus some constant
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.MATCH_PARENT,
     textSize + BUTTON_TEXT_MARGIN);
w3nuxt5m

w3nuxt5m2#

用途:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

在你的情况下,你也可以使用一个简单的 MaterialButton :

val b = MaterialButton(this)
 b.cornerRadius = resources.getDimensionPixelOffset(R.dimen.cornerSize)

相关问题