• actionMode-theme中修改actionmode中more下拉框的背景颜色


      今天在做图库修改是,需要修改图库的actionbar某个按钮弹出来的下拉框的背景颜色,在网上找了个方法尝试下,没有打到自己的要求,不过阴差阳错的却修改了more下拉框的背景,再次记录下,也许以后能用的到。

      代码

       <style name="Theme.FunuiGallery" parent="android:Theme.Funui">
            <item name="listPreferredItemHeightSmall">48dp</item>
            <item name="android:itemTextAppearance">@style/Gallery.IconMenu.Item</item>
            <item name="switchStyle">@android:style/Widget.CompoundButton</item>
            <item name="android:actionBarStyle">@style/PhotoBarStyle</item>
            <item name="android:actionModeStyle">@style/ActionModeStyle</item>
            <item name="android:actionOverflowButtonStyle">@style/ContactsActionBarOverflow</item>
            <item name="android:actionModeSplitBackground">@android:drawable/ic_menu_close_clear_cancel</item>
         <item name="*android:activityChooserViewStyle">@style/Gallery.ChooserViewStyle</item>
            <item name="*android:actionModeShareDrawable">@drawable/ic_menu_share_holo_dark</item>

    </style> <!-- 修改字体颜色--> <style name="Gallery.IconMenu.Item" parent="@android:style/TextAppearance.Small"> <item name="android:textColor">#ffffff</item> </style> <!--修改more按钮图标--> <style name="ContactsActionBarOverflow" parent="@android:style/Widget.Holo.ActionButton.Overflow"> <item name="android:src">@drawable/action_mode_more</item> </style>
        <style name="Gallery.ChooserViewStyle" parent="@*android:style/Widget.Funui.ActivityChooserView">
             <item name="android:background">@null</item>
        </style>

     属性介绍:

    1.<item name="android:itemTextAppearance">@style/Gallery.IconMenu.Item</item>

    这个主要是用来设置actionmode里面的more按钮的下拉框字体颜色,不过,它里面好像没有设置背景颜色的属性,反而背景会随着字体的颜色而改变

    2.<item name="*android:activityChooserViewStyle">@style/Gallery.ChooserViewStyle</item>

    这个是用来修改图库上面的那个分享背景的

    3.<item name="*android:actionModeShareDrawable">@drawable/ic_menu_share_holo_dark</item>

    这个是用来修改分享的图标的

    注意

    当我们要引用一个非公开的theme或者sytle属性的时候,这时候,我们一定要在前面加上一个*号,无论这个属性是在使用,还是作为某一个theme的父类,就如上面的

    <style name="Gallery.ChooserViewStyle" parent="@*android:style/Widget.Funui.ActivityChooserView">

    <item name="*android:actionModeShareDrawable">@drawable/ic_menu_share_holo_dark</item>

    如果我们实在代码中进行引用,是没办法直接引用非公开的属性的,这时候我们要么是把那个属性公开,要么是自己定义一个属性,然后利用*号引用父类,这时候自己的主题就是公开的了;

    如何看一个属性是不是公开的?我们只需要在framework下搜索这个属性,如果能看到public文件中有,就说名这个属性是公开的,就像<public type="attr" name="textAppearanceInverse" id="0x01010035" />。至于怎么使一个属性公开化,还没有去尝试,以后用到再说吧。

     

    今天让一个同事帮忙解决一个问题,主要就是替换一个图片。看他的操作,给我的感触很深,就是他解决问题的时候,思路非常的清晰,虽然他也不知道能不能解决,但他总是能沿着一个方向,有条不紊的进行,而不会向我一样都是在一个地方来回绕。

      1.查找问题关键字

      2.到framework下查找类的具体实现,看其中有没有可利用的属性来实现自己的要求

      3.反过来查询,根据图片来查看到底那个地方用到了这个图片

  • 相关阅读:
    SQLServer 知识点
    Entity转换为ViewModel时提供的一种转换方法
    Linq中IGrouping转换为IQueryable
    封装整形属性时对应到枚举
    新的转换列表方式
    工作态度
    EasyFrame
    NewCloud
    将博客搬至CSDN
    Html的语义化
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_actionmode_150112.html
Copyright © 2020-2023  润新知