【发布时间】:2019-11-12 09:16:58
【问题描述】:
我正在设置一个新的应用程序,并发现 materialButton 的高度与我设置的大小不匹配。 所以我尝试了常规按钮,正如你们在下面的屏幕截图中看到的那样。 这些按钮具有不同的高度,尽管它们的高度与您在我的代码中看到的相同。
如何使用 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();
}
}
【问题讨论】:
-
它们的高度相同。使用 Android Studio 中的 Layout Inspector 进行确认。您还可以使用 Layout Inspector 尝试确定 rendering 不同的原因。它可能是
MaterialButton使用的背景形状,或者MaterialButton可能定义了默认的顶部/底部边距。 -
谢谢@CommonsWare,我可以确认。所有属性之间的区别是填充。普通按钮具有 mPaddingTop 27、mPaddingBottom 27 和 mUserPaddingBottom 27。材质 Buttons 具有相同的值,但这些值还有 mUserPaddingEnd 44、mUserPaddingLeft 44、mUserPaddingRight 44 和 mUserPaddingStart 44。我不知道该怎么做。
-
给你的
Button添加一些填充,我猜。 -
它只是将按钮从里面的文本字段向下移动。
-
@CommonsWare 您还有其他建议吗?我仍然面临这个问题..
标签: java android material-design android-button material-components-android