我正在尝试通过代码设置“材质”按钮的背景颜色和笔触颜色,但未获得所需的输出,当我尝试执行此操作时,其宽度和高度会更改。请参考下图:
上一个
稍后
<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" />
该按钮位于weightsSum = 1的线性布局内。我还尝试使用setPadding()和setPaddingRelative()来更改宽度高度,但是它没有任何作用如果有人知道为什么会发生,可以分享吗?
更新
我知道了,对我有用的是将xml文件中的android:inset ***参数设置为0dp,如Google's official document中提到的MaterialButton和AppCompatButton行为不同。
这取决于您要达到所需效果的API版本。对于API 21及更高版本,material按钮以不同的方式(本机方式)绘制其角和笔触(最可能是shadow),而在API 21以下,则其手动添加填充,更改其宽度/高度由于其Java代码,因此会产生意外的结果。