如何解决Drawable 在 Android Studio 的不同 Activity 布局中表现不同
我有以下可绘制对象:custom_yellow_button.xml
在可绘制文件夹中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="5dp"/>
<solid android:color="@color/yellow"/>
</shape>
</item>
</selector>
我有这两种不同的布局,它们都使用相同的按钮:
<?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"
android:background="#FFFFFF"
tools:context=".LogInActivity">
<Button
android:id="@+id/login_button"
android:layout_width="275dp"
android:layout_height="35dp"
android:layout_marginTop="20dp"
android:background="@drawable/custom_yellow_button"
android:fontFamily="@font/courierprime_regular"
android:includeFontPadding="false"
android:text="Log In"
android:textColor="#000000"
android:textSize="21sp"
app:backgroundTintMode="add" />
</androidx.constraintlayout.widget.ConstraintLayout>
和
<?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=".RegistrazioneActivity">
<Button
android:id="@+id/login_button"
android:layout_width="275dp"
android:layout_height="35dp"
android:background="@drawable/custom_yellow_button"
android:fontFamily="@font/courierprime_regular"
android:includeFontPadding="false"
android:text="Log In"
android:textColor="#000000"
android:textSize="21sp" />
</androidx.constraintlayout.widget.ConstraintLayout>
在第一个布局中,它看起来像这样,这正是我想要的:
在第二种布局中,它看起来像这样:
谁能告诉我为什么?如果需要,我可以提供更多信息。
解决方法
我不确定您使用的是什么主题,但是使用 MaterialThemes 您可以做到这一点,而且很容易。首先检查这个:https://material.io/components/buttons
然后,更改您的应用主题以扩展材料主题之一,如下所示:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
然后添加实现:
implementation 'com.google.android.material:material:1.2.1'
之后,您可以简单地将其用作 XML 中的按钮:
<com.google.android.material.button.MaterialButton/>
在这个 View
中,您的按钮有很多属性。只需检查上面的链接并查看。对于你,我会选择这样的:
<com.google.android.material.button.MaterialButton
android:layout_width="match_parent"
android:layout_height="60dp"
android:textAlignment="center"
android:textAllCaps="true"
android:padding="15dp"
android:backgroundTint="@color/yellow" //add background color
app:rippleColor="@color/colorPrimary" //ripple color - when button is pressed
style="@style/Widget.MaterialComponents.Button.TextButton" //material component style,many options to choose from
android:textColor="@color/colorPrimaryDark"
app:cornerRadius="15dp" //corner radius,so you can adjust how much oval you want your corners to be/>
你会得到这样的结果:
,查看 AndroidManifest.xml
并确保您为它们分配了相同的主题。
XML 编辑器的预览也可以切换到所有可用的主题,包括自定义主题。
当您像这样向 XML 编辑器提供布局的 Context
时:
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.MainActivity"
XML 编辑器将为预览选择该主题 - 无需切换它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。