Android的“材质按钮”大小已重置

时间:2019-12-10 06:18:48

标签: android material-design android-button

我试图通过代码设置“材质”按钮的背景颜色和笔触颜色,但未获得所需的输出,当我尝试执行此操作时,其宽度和高度会更改。请参考以下图片:

上一个

稍后

<com.google.android.material.button.MaterialButton
            style="@style/Widget.MaterialComponents.Button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:paddingStart="15dp"
            android:paddingTop="10dp"
            android:paddingEnd="15dp"
            android:paddingBottom="10dp"
            app:backgroundTint="@color/grey"
            app:strokeColor="@color/DarkGrey"
            app:strokeWidth="2dp"
            app:cornerRadius="5dp"
            android:textAllCaps="false"
            android:text="@string/approve"
            android:textSize="@dimen/approve_btn_text_size"
            android:textColor="@color/black" />

该按钮位于weightSum = 1的线性布局中。 我还尝试使用setPadding()和setPaddingRelative()来更改宽度高度,但是它没有任何作用 如果有人知道为什么会发生,可以分享吗?

更新

我成功了,对我来说有效的是将xml文件中的android:inset ***参数设置为0dp,如Google's official document中所述,MaterialButton和AppCompatButton的行为是不同的。

2 个答案:

答案 0 :(得分:1)

我成功了,对我来说有效的是将XML文件中的android:inset ***参数设置为0dp

参考:

https://developer.android.com/reference/com/google/android/material/button/MaterialButton

答案 1 :(得分:0)

这取决于您要达到所需效果的API版本。对于API 21及更高版本,材质按钮以不同的方式(本机方式)绘制其角和笔触(最有可能是阴影),而在API 21以下,它会手动添加填充并更改其填充宽度/高度(由于其Java代码),因此会产生意外的结果。