MaterialButton与Button的大小差异

时间:2019-07-01 18:00:54

标签: java android material-design

我正在设置一个新的应用程序,并遇到了MaterialButton的高度与我设置的大小不匹配的事实。 因此,我尝试使用常规Button,就像你们在下面的屏幕截图中看到的那样。 这些按钮的高度不同,尽管它们的高度与您在我的代码中看到的高度相同。

如何使用MaterialButton达到正常的高度?

谢谢。

公共类MainActivity扩展了AppCompatActivity {

MaterialButton materialButton;
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LinearLayout linearLayout = new LinearLayout(this);
    linearLayout.setId(getGeneratedId());

    setContentView(linearLayout);

    int buttonWidth = getResources().getDimensionPixelSize(R.dimen.buttonWidth);
    int buttonHeight = getResources().getDimensionPixelSize(R.dimen.buttonHeight);

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(buttonWidth, buttonHeight);

    materialButton = new MaterialButton(this);
    materialButton.setId(getGeneratedId());
    materialButton.setLayoutParams(layoutParams);
    materialButton.setBackgroundColor(Color.BLUE);
    materialButton.setText("MatrialB");
    materialButton.setTextColor(Color.WHITE);


    button = new Button(this);
    button.setId(getGeneratedId());
    button.setLayoutParams(layoutParams);
    button.setBackgroundColor(Color.RED);
    button.setText("Button");
    button.setTextColor(Color.WHITE);

    linearLayout.addView(materialButton);
    linearLayout.addView(button);

}

Integer getGeneratedId() {
    return ViewCompat.generateViewId();
}

}

Screenshot

2 个答案:

答案 0 :(得分:8)

我相信MaterialButton顶部和底部的空间来自android:insetTop / android:insetBottom,对于我的材料组件1.0.0,这是6dp。我不确定如何以编程方式设置它们,但是可以在xml中轻松完成:

<com.google.android.material.button.MaterialButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:insetBottom="0dp"
      android:insetTop="0dp"/>

答案 1 :(得分:3)

MaterialButton的默认样式为insetBottominsetTop,其值为6dp

您可以在不使用垂直插图的情况下检查差异:

enter image description here

您可以使用以下方法更改默认值:

<com.google.android.material.button.MaterialButton
    android:insetTop="0dp"
    android:insetBottom="0dp"

或以编程方式(至少需要1.3.0-alpha03):

    button.insetTop = 0
    button.insetBottom = 0