Jéw*_*ôm' 5 android android-button android-styles material-components material-components-android
我尝试使用style它shapeAppearance:
<style name="ShapeAppearance.Button" parent="ShapeAppearance.MaterialComponents">
<item name="cornerFamily">rounded</item>
<item name="cornerSizeTopLeft">@dimen/button_corner_radius</item>
<item name="cornerSizeTopRight">5dp</item>
<item name="cornerSizeBottomRight">@dimen/button_corner_radius</item>
<item name="cornerSizeBottomLeft">5dp</item>
</style>
<dimen name="button_corner_radius">40dp</dimen>
Run Code Online (Sandbox Code Playgroud)
我像这样在我的 MaterialButton 中应用样式:
app:shapeAppearance="@style/ShapeAppearance.Button"
Run Code Online (Sandbox Code Playgroud)
结果是:
现在,我尝试放置一个线性渐变:
例如 :
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#DF2D48"
android:centerColor="#D72D46"
android:endColor="#AC2139"
android:angle="360" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我在我的形状样式中使用它:
<item name="android:background">@drawable/test</item>
Run Code Online (Sandbox Code Playgroud)
但结果是一样的。为什么 ?
有关MaterialButton:
它使用 aMaterialShapeDrawable来应用shapeAppearance(形状和描边)。
目前 ( 1.3.0)MaterialShapeDrawable 不支持渐变背景。
它仅支持android:background从1.2.0-alpha06. 但使用android:background会MaterialButton 删除默认MaterialShapeDrawable背景并且shapeAppearance不会应用。
如果您使用的是MaterialComponents 主题,则和之间没有区别,因为会在运行时将 替换为 a 。<Button /><com.google.android.material.button.MaterialButton />MaterialComponentsViewInflaterButtonMaterialButton
你有2个解决方案:
使用具有自定义圆角和渐变颜色的自定义形状并将其android:background应用于MaterialButton
使用自定义形状并将其应用到AppCompatButton.
和MaterialButton:
<com.google.android.material.button.MaterialButton
app:backgroundTint="@null"
android:background="@drawable/gradient_shape"
/>
Run Code Online (Sandbox Code Playgroud)
确保清空backgroundTint(app:backgroundTint="@null"或app:backgroundTint="@empty"),以避免自定义背景不着色。
注意:它至少需要版本1.2.0-alpha06.
和AppCompatButton:
<androidx.appcompat.widget.AppCompatButton
android:background="@drawable/gradient_shape"/>
Run Code Online (Sandbox Code Playgroud)
形状如下:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="0"
android:endColor="...."
android:startColor="...." />
<corners android:topLeftRadius="40dp"
android:bottomRightRadius="40dp"
android:topRightRadius="5dp"
android:bottomLeftRadius="5dp"
/>
</shape>
Run Code Online (Sandbox Code Playgroud)
使用材质按钮的渐变颜色:
MaterialButton : 要使用具有 MaterialButton 背景色调属性的自定义可绘制背景,参考代码应为 null:app:backgroundTint="@null"
<com.google.android.material.button.MaterialButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:text="@string/button_enabled"
app:backgroundTint="@null"
android:background="@drawable/gradient_1"
/>
Run Code Online (Sandbox Code Playgroud)
具有形状的渐变: res/drawable/gradient_1.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="0"
android:endColor="#DD8E54E9"
android:startColor="#CC225AE0" />
<corners android:topLeftRadius="18dp"
android:bottomRightRadius="18dp"
android:topRightRadius="5dp"
android:bottomLeftRadius="5dp"
/>
<stroke
android:width="6dp"
android:color="#007879E8" />
</shape>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |