我在Android中使用可绘制图形时遇到了麻烦,经过几天的深入研究,我决定向您寻求帮助。
为了满足我的需要,我创建了一个可绘制的图像,以在Android Studio的XML布局中使用它(文件名为circle.xml)。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false">
<solid android:color="#BABABE"/>
</shape>
</item>
</selector>
这里设置的颜色是通用的,但取决于我使用drawable的情况。
这是我正在使用的ConstraintLayout
:
<android.support.constraint.ConstraintLayout
android:id="@+id/constraintLayout11"
android:layout_width="71dp"
android:layout_height="71dp"
android:layout_marginTop="24dp"
android:background="@drawable/circle"
android:backgroundTint="#D95F2B"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</android.support.constraint.ConstraintLayout>
我设置了具有以下属性的新颜色:
android:background="@drawable/circle"
android:backgroundTint="#D95F2B"
设置background
属性会使圆圈显示在ConstraintLayout
中,设置backgroundTint
颜色会使圆圈的颜色发生变化。
问题是,在某些设备上,它运行良好,但在某些其他设备上,未应用backgroundTint
颜色,圆形仅保留了可绘制对象中设置的颜色。
我知道我可以在活动代码中设置颜色,但这并不是我想要的。
有解决的主意吗?如有需要,随时问我一些问题。
非常感谢!
答案 0 :(得分:0)
很明显,可绘制的工作应该按原样进行,因此问题出在android:backgroundTint
上。
此属性实际上适用于API的> 21,而您可能会遇到某些其他电话类型的怪异行为。
因此,如果您需要一个 generic 圈子来在任何地方使用它,可以采取一些措施:
直接在可绘制的<solid android:color="@color/your_color"/>
中使用颜色,看来这对您没有帮助。
使用android:colorBackground
属性代替backgroundTint
,
然后将其设置为样式,即:
样式:
<style name="YourStyle" parent="YourParent">
<item name="android:background">@drawable/circle</item>
<item name="android:colorBackground">@color/your_color</item>
</style>
样式将与约束布局一起使用。
Xml:-
<ConstraintLayout
android:background="@drawable/circle"
<View
android:background="@color/your_color"
>
>