小编cmi*_*mai的帖子

Android:如何在一个Vector Drawable xml中使用选择器更改android:fillcolor

选项卡图标:我当前的方法是创建两个文件(ic_list_selected_24dp.xml和ic_list_unselected_24dp.xml;它们基本相同但只是android:fillColor='Color HEX CODE'不同),然后创建一个选择器(selector_tabitem_list.xml)来更改状态时的可绘制颜色改变了.

// @drawable/selector_tabitem_list.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:drawable="@drawable/ic_list_selected_24dp" 
        android:state_selected="true" />
    <item android:drawable="@drawable/ic_list_unselected_24dp" 
        android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

它有点复制,因为两个drawable是相同的.

选择器不能用于矢量drawable.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="@drawable/selector"
        android:pathData="M19,3...."
</vector>
Run Code Online (Sandbox Code Playgroud)

-

// @drawable/selector

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <color android:color="@color/itemSelected" />
    </item>
    <item android:state_selected="false">
        <color android:color="@color/itemUnselected" />
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

,android:fillColor="@color/state"或者.

// @color/state

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" android:state_selected="true" />
    <item android:color="@android:color/black" android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

有没有办法使用一个drawable并动态更改其颜色?使用硬十六进制代码更好?

谢谢.

android android-tabs android-selector android-tablayout android-vectordrawable

7
推荐指数
1
解决办法
3522
查看次数

如何使用 Room 库正确使用 strftime 和 datetime?

我有一个实体Memo类。我@TypeConverter用来转换GregorianCalendarLong.

备忘录.java

@Entity
public class Memo {
    @Ignore
    public static final int TYPE_EXPENSE = 0;
    @Ignore
    public static final int TYPE_INCOME = 1;

    @PrimaryKey(autoGenerate = true)
    public int id;

    public int type;
    @ColumnInfo(name = "item_name")
    public String itemName;
    @ColumnInfo(name = "category_name")
    public String categoryName;
    public String note;
    public double dollar;
    public GregorianCalendar date;
    public String photoPath;

    @Ignore
    public Memo(int type) {
        this.type = type;
        itemName = "";
        categoryName = "";
        note = …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite android-room

5
推荐指数
1
解决办法
3351
查看次数