我以编程方式创建了一个材质按钮,我希望它在屏幕底部,就像完全填充底部一样,但是问题在于默认的底部插图会产生明显的底部空白。
只需使用
即可轻松删除XML中的材料按钮的插入android:insetLeft android:insetRight android:insetTop android:insetBottom
但是我的问题是如何以编程方式设置插入值。
我发现下面的链接对于了解材料按钮非常有用 https://github.com/material-components/material-components-android/blob/master/docs/components/MaterialButton.md
答案 0 :(得分:2)
支持以编程方式设置顶部和底部插入已在 material-components-1.3.0-alpha03
中实现在 Kotlin 中,您可以:
val materialButton = MaterialButton(ctx)
materialButton.insetTop = 0
materialButton.insetBottom = 0
答案 1 :(得分:1)
我也努力寻找解决方案。找到了。您需要为按钮创建一个没有插入样式的样式,然后在您的应用主题的materialButtonOutlinedStyle
属性中对其进行定义。不要忘记在MaterialButton
ctor中指定这样的属性。像这样:
styles.xml:
<style name="AppTheme" parent="Theme.MaterialComponents" >
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
< ... />
<!-- The following defines the OutlinedButton style with your custom attrs -->
<item name="materialButtonOutlinedStyle">@style/Widget.MaterialComponents.Button.OutlinedButton.NoInsets</item>
</style>
<style name="Widget.MaterialComponents.Button.OutlinedButton.NoInsets"
parent="Widget.MaterialComponents.Button.OutlinedButton" >
<!-- Here you can customize the drawable insets! -->
<item name="android:insetTop">0dp</item>
<item name="android:insetBottom">0dp</item>
</style>
活动/代码/任何Java语言:
private void addButtons() {
MaterialButtonToggleGroup buttonGroup = findViewById(R.id.preference_selection_button_group);
final ViewGroup.LayoutParams lp = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
final int n = mEntries.length;
for (int i = 0; i < n; i++)
buttonGroup.addView(createChoiceButton(i, mEntries[i]), i, lp);
}
private View createChoiceButton(int index, CharSequence entry) {
final MaterialButton button = new MaterialButton(
getContext(),
null,
R.attr.materialButtonOutlinedStyle /** which points to your new OutlinedButton theme **/);
button.setId(index);
button.setText(entry);
return button;
}
布局:
<parentLayout ...>
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/preference_selection_button_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:singleSelection="true"
app:selectionRequired="true" />
</parentLayout>
此代码在垂直MaterialButtonToggleGroup
中使用,结果如下:
答案 2 :(得分:0)
据我所知,在MaterialButton源代码中没有公共方法来设置插图:
因此,您需要复制源并添加类似setInsets()方法的内容。 检查下面的此链接,这是与您类似的问题: How to Change InsetDrawable Inset value after creation