我正在尝试使用backgroundTint创建渐变按钮。
我在drawable中定义了渐变:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:centerX="50%"
android:centerY="50%"
android:endColor="#308c35"
android:gradientRadius="100dp"
android:startColor="#66BB6A"
android:type="linear" />
<corners android:radius="22dp" />
</shape>
现在我正尝试将其用作按钮的值:
<com.google.android.material.button.MaterialButton
android:id="@+id/material_unelevated_button"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
android:layout_width="160dp"
android:layout_height="58dp"
android:layout_marginBottom="84dp"
android:text="@string/button_start_text"
app:backgroundTint="@drawable/main_gradient"
app:cornerRadius="14dp"
app:iconPadding="3dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:strokeWidth="0dp" />
不幸的是,它不适用于backgroundTint。我使用的是材质主题,因此只有更改backgroundTint值,我才能更改按钮的外观。我找不到解决方案,我尝试将android:background和所有其他与背景相关的选项设置为渐变,但是没有效果。
答案 0 :(得分:1)
它不起作用。我也以某种方式尝试了这一点,并且它在“材质”按钮中渐变不起作用,并且与材质设计的内部有关。
答案 1 :(得分:0)
尝试这样:
drawableFile:-
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/sky_blue"
android:drawable="@android:color/transparent" />
<solid android:color="@color/message_fragment_button" />
<corners
android:bottomLeftRadius="@dimen/dp_10"
android:bottomRightRadius="@dimen/dp_10"
android:topLeftRadius="@dimen/dp_10"
android:topRightRadius="@dimen/dp_10" />
</shape>
XML文件:-
<Button
android:id="@+id/btn_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="@dimen/dp_20"
android:layout_marginLeft="@dimen/dp_20"
android:background="@drawable/confirm_button_green"
android:drawableStart="@drawable/message_btn_logo"
android:drawableLeft="@drawable/message_btn_logo"
android:drawablePadding="@dimen/dp_5"
android:gravity="center_vertical"
android:padding="@dimen/dp_5"
android:paddingStart="@dimen/dp_15"
android:paddingLeft="@dimen/dp_15"
android:paddingTop="@dimen/dp_15"
android:paddingEnd="@dimen/dp_20"
android:paddingRight="@dimen/dp_20"
android:paddingBottom="@dimen/dp_15"
android:text="Confirm"
android:textAllCaps="false"
android:textColor="@color/white"/>
希望这会对您有所帮助。
答案 2 :(得分:0)
这很简单:
gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:centerX="50%"
android:centerY="50%"
android:endColor="#308c35"
android:gradientRadius="100dp"
android:startColor="#66BB6A"
android:type="linear" />
<corners android:radius="@dimen/dp_10" />
</shape>
和您的按钮:
<Button
android:id="@+id/btn_confirm"
android:layout_width="160dp"
android:layout_height="58dp"
android:layout_marginBottom="84dp"
android:text="@string/button_start_text"
android:layout_weight="1"
android:background="@drawable/gradient" >