高校门户网站源码,浏览器怎么打开网站服务器,韩国女足出线了吗,绿园区住房和城乡建设局网站距离上次写Material组件的文章已经过去了好多年#x1f604;#xff0c;最近在写Flutter又接触到了Material#xff0c;已经升级了许多#xff0c;这次就用新的组件来试试吧#xff5e;
Button组件大家都非常熟悉了#xff0c;如果画一个带圆角#xff0c;边框的按钮最近在写Flutter又接触到了Material已经升级了许多这次就用新的组件来试试吧
Button组件大家都非常熟悉了如果画一个带圆角边框的按钮通常我们是画一个ShapeDrawable并把它设置到Button的android:background属性中就可以了写写shape xml文件有时还是烦的这里首先推荐一个三方库BackgroundLibrary可以很方便的通过属性设置的方式实现圆角边框以及各种状态效果的Background使用非常简单有兴趣的同学直接参考文档即可。
MaterialButton继承AppCompatButton在原来Button的基础上做了一些扩展如圆角、描边、前置和后置iconicon支持设置Size、Tint、Padding、Gravity等还支持按压水波纹并且设置color新增属性如下。
属性描述app:backgroundTint背景着色app:backgroundTintMode着色模式app:strokeColor描边颜色app:strokeWidth描边宽度app:cornerRadius圆角大小app:rippleColor按压水波纹颜色app:icon图标iconapp:iconSize图标大小app:iconGravity图标重心app:iconTint图标着色app:iconTintMode图标着色模式app:iconPadding图标和文本之间的间距
app:backgroundTint
tint着色的使用其实是一个非常巧妙的用法尤其是在给图片给颜色上面这样可以多个地方共用同一个图片资源减少包的体积。 MaterialButton是不受android:background控制的官方建议我们设置app:backgroundHint来进行背景的更改。 1.2版本以前MaterialButton只能通过app:backgroundTint属性设置背景色该属性接收color state list。不能通过android:background设置自定义drawable。 1.2版本后官方已修复此问题。如果未设置自定义背景则 MaterialShapeDrawable 仍将用作默认背景。也就是说如果按钮背景是纯色可以通过app:backgroundTint指定如果按钮背景是渐变色则需要自己定义drawable然后通过android:background设置。 MaterialButton设置background和backgroundTint是互斥的。 如果要使用android:background设置背景则需要将backgroundTint设置为empty否则background不会生效。 如果你想要给MaterialButton设置圆角和描边则必须用app:backgroundTint来设置背景色用background设置将导致圆角和描边失效。 背景不能撑满存在间距问题 AppCompatButton如果设置了android:background会覆盖上下左右的间距MaterialButton则不会 MaterialButton设置了app:backgroundHint左右是没有间距的而上下默认有6dp边距这是MD的设计规范可以通过insetxxx来进行修改。AppCompatButton设置了app:backgroundHint是上下左右都有间距留了4个dp的占位。 如果想要取消背景间距设置insetTop和insetBottom为0dp android:text为数字或者字母被加粗问题 这个问题其实并不是MaterialButton安卓原生的Button也会有这样的问题解决方案设置 android:textAppearance?android:attr/textAppearanceLarge 去掉阴影 MD组件默认都是自带阴影的MaterialButton也不例外。但是有时候我们并不想要按钮有阴影那么这时候可以指定style为 stylestyle/Widget.MaterialComponents.Button.UnelevatedButton这样就能去掉阴影让视图看起来扁平化。
app:icon
在使用MaterialButton之前要给Button按钮的文字旁边设置一个Icon我们通常是设置android:drawableLeft等给上下左右设置图标可是这个东西有个问题一是图标大小颜色不能随心所欲的设置修改起来比较麻烦二是图标和文字之间默认有个间距这个间距的调整也比较麻烦但是如果用MaterialButton这些问题通通都不是问题了只需要跟使用属性一样进行设置就可以了虽然默认文字和图标之间也有一定的间距但是我们可以通过设置app:iconPadding为0dp来取消但是如果是android:drawableLeft貌似设置android:drawablePadding并不能完美的去掉他哎。