Drawable 不对我的按钮应用格式
Drawable does not apply formatting to my button
我有这个 Drawable 旨在制作我的圆形按钮:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary"/>
<corners android:radius="150dp"/>
</shape>
</item>
</selector>
我通常在按钮的后台调用他...
<Button
android:id="@+id/btnPhoto"
android:background="@drawable/bg_btn_rounded"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginStart="8dp"
android:layout_marginTop="42dp"
android:layout_marginEnd="8dp"
android:text="@string/btnphoto"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
但是没有对组件应用任何更改,我尝试在其他组件上使用 Drawable 但它不适用......我不知道为什么会这样。
我的完整屏幕:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.misael.appchat.RegisterActivity">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tUsername"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:hint="@string/usernameHint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnPhoto">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editUsername"
android:layout_width="match_parent"
android:layout_height="68dp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tEmail"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginTop="24dp"
android:hint="@string/loginHint"
app:layout_constraintEnd_toEndOf="@+id/tUsername"
app:layout_constraintStart_toStartOf="@+id/tUsername"
app:layout_constraintTop_toBottomOf="@+id/tUsername">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editEmail"
android:layout_width="match_parent"
android:layout_height="68dp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tSenha"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginTop="24dp"
android:hint="@string/passwordHint"
app:layout_constraintEnd_toEndOf="@+id/tEmail"
app:layout_constraintStart_toStartOf="@+id/tEmail"
app:layout_constraintTop_toBottomOf="@+id/tEmail">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editPassword"
android:layout_width="match_parent"
android:layout_height="68dp"
android:inputType="textPassword" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnRegister"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="58dp"
android:layout_marginTop="32dp"
android:text="@string/signinButton"
android:textColor="#7517bd"
app:layout_constraintEnd_toEndOf="@+id/tSenha"
app:layout_constraintStart_toStartOf="@+id/tSenha"
app:layout_constraintTop_toBottomOf="@+id/tSenha" />
<Button
android:id="@+id/btnPhoto"
android:background="@drawable/bg_btn_rounded"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginStart="8dp"
android:layout_marginTop="42dp"
android:layout_marginEnd="8dp"
android:text="@string/btnphoto"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
您使用的是 Material Components 主题吗?如果是这样,您的 <Button>
标签将被夸大为 com.google.android.material.button.MaterialButton
。 The documentation 对于此小部件声明:
Do not use the android:background
attribute. MaterialButton
manages its own background drawable, and setting a new background means MaterialButton
can no longer guarantee that the new attributes it introduces will function properly.
如果您不想要特殊的 Material 按钮行为,您可以明确指定要使用的不同按钮 class。将您的 <Button>
标签改为:
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnPhoto"
android:background="@drawable/bg_btn_rounded"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginStart="8dp"
android:layout_marginTop="42dp"
android:layout_marginEnd="8dp"
android:text="@string/btnphoto"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /
如果您使用的是 Material 主题,则会启用 auto-inflation,它将 <Button>
替换为 <com.google.android.material.button.MaterialButton>
在运行时。
还要检查这个 .
只需使用app:backgroundTint
属性定义背景色,使用app:cornerRadius
属性定义角半径。
类似于:
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPhoto"
app:backgroundTint="@color/primaryLightColor"
app:cornerRadius="150dp"
android:layout_width="150dp"
android:layout_height="150dp"/>
我有这个 Drawable 旨在制作我的圆形按钮:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary"/>
<corners android:radius="150dp"/>
</shape>
</item>
</selector>
我通常在按钮的后台调用他...
<Button
android:id="@+id/btnPhoto"
android:background="@drawable/bg_btn_rounded"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginStart="8dp"
android:layout_marginTop="42dp"
android:layout_marginEnd="8dp"
android:text="@string/btnphoto"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
但是没有对组件应用任何更改,我尝试在其他组件上使用 Drawable 但它不适用......我不知道为什么会这样。
我的完整屏幕:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.misael.appchat.RegisterActivity">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tUsername"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:hint="@string/usernameHint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnPhoto">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editUsername"
android:layout_width="match_parent"
android:layout_height="68dp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tEmail"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginTop="24dp"
android:hint="@string/loginHint"
app:layout_constraintEnd_toEndOf="@+id/tUsername"
app:layout_constraintStart_toStartOf="@+id/tUsername"
app:layout_constraintTop_toBottomOf="@+id/tUsername">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editEmail"
android:layout_width="match_parent"
android:layout_height="68dp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tSenha"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_marginTop="24dp"
android:hint="@string/passwordHint"
app:layout_constraintEnd_toEndOf="@+id/tEmail"
app:layout_constraintStart_toStartOf="@+id/tEmail"
app:layout_constraintTop_toBottomOf="@+id/tEmail">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editPassword"
android:layout_width="match_parent"
android:layout_height="68dp"
android:inputType="textPassword" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnRegister"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="58dp"
android:layout_marginTop="32dp"
android:text="@string/signinButton"
android:textColor="#7517bd"
app:layout_constraintEnd_toEndOf="@+id/tSenha"
app:layout_constraintStart_toStartOf="@+id/tSenha"
app:layout_constraintTop_toBottomOf="@+id/tSenha" />
<Button
android:id="@+id/btnPhoto"
android:background="@drawable/bg_btn_rounded"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginStart="8dp"
android:layout_marginTop="42dp"
android:layout_marginEnd="8dp"
android:text="@string/btnphoto"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
您使用的是 Material Components 主题吗?如果是这样,您的 <Button>
标签将被夸大为 com.google.android.material.button.MaterialButton
。 The documentation 对于此小部件声明:
Do not use the
android:background
attribute.MaterialButton
manages its own background drawable, and setting a new background meansMaterialButton
can no longer guarantee that the new attributes it introduces will function properly.
如果您不想要特殊的 Material 按钮行为,您可以明确指定要使用的不同按钮 class。将您的 <Button>
标签改为:
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnPhoto"
android:background="@drawable/bg_btn_rounded"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginStart="8dp"
android:layout_marginTop="42dp"
android:layout_marginEnd="8dp"
android:text="@string/btnphoto"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /
如果您使用的是 Material 主题,则会启用 auto-inflation,它将 <Button>
替换为 <com.google.android.material.button.MaterialButton>
在运行时。
还要检查这个
只需使用app:backgroundTint
属性定义背景色,使用app:cornerRadius
属性定义角半径。
类似于:
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPhoto"
app:backgroundTint="@color/primaryLightColor"
app:cornerRadius="150dp"
android:layout_width="150dp"
android:layout_height="150dp"/>