Styling Custom Views

后端 未结 3 1003
无人共我
无人共我 2021-02-04 15:47

I have a few custom views in my Android project and I\'ve added the relevant details to the attrs.xml file. And now I can implement my objects through XML. This works fine.

相关标签:
3条回答
  • 2021-02-04 16:33

    try this solution

    <style name="Journey_DaySelect_Sunday">
    <item name="onImage">@drawable/day_sunday_selected</item>
    <item name="offImage">@drawable/day_sunday</item>
    </style>
    

    reference(Chinese)

    if you guys think it useful,I will translate it.

    0 讨论(0)
  • 2021-02-04 16:37

    After more intensive searching on Google I gave up finding it answered elsewhere, and by chance tried using the absolute namespace of my generated R file it worked. May this solve all your problems.

    USE THE NAMESPACE CONTAINING YOUR R FILE

    <style name="Journey_DaySelect_Sunday" parent="Journey_DaySelect">
        <item name="AppZappy.NIRailAndBus:onImage">@drawable/day_sunday_selected</item>
        <item name="AppZappy.NIRailAndBus:offImage">@drawable/day_sunday</item>
    </style>
    
    0 讨论(0)
  • 2021-02-04 16:50

    For clarification, the item's name attribute should be the same as what is in the attrs.xml's declare-styleable name attribute + ":" + the attribute name.

    For example:

    attrs.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>  
        <declare-styleable name="com.chuck.norris">
            <attr name="actionBarTextColor" format="color"/>
        </declare-styleable> 
    </resources>
    

    style.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="myNewStyle">
            <item name="android:textColor">#FFFF0000</item>
            <item name="com.chuck.norris:actionBarTextColor">#ffff0000</item>
        </style>
    </resources>
    

    You can then apply this style to all activities by using a theme in your manifest.xml file. Anywhere that a custom view exists that wants to use the "actionBarTextColor" attribute, you can then use the Java code:

    TypedArray typedArray = context.obtainStyledAttributes(attrSet, R.styleable.com_chuck_norris);
    COLOR_ACTION_BAR_TEXT = typedArray.getColor(R.styleable.com_chuck_norris_actionBarTextColor, 0xff0000ff);
    typedArray.recycle();
    

    I'm not sure why you cannot just define your schema in your style.xml file as was asked above, but it seems to be a limitation of style.xml.

    0 讨论(0)
提交回复
热议问题