青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Codejie's C++ Space

Using C++

Android DEV : Custom new state for TextView


    Android中的常用View, 如TextView, Button等, 都有state概念 -- state_pressed, state_selected, state_enabled等等, 這些狀態(tài)都是boolean類型的變量, 可以通過其set/get方法讀取或者設(shè)置這些狀態(tài).
    狀態(tài)的概念在其他平臺(tái)或者GUI庫中都是存在的, 因?yàn)檫@些是View的基本屬性, 但Android中將其與View的Color/Drawable屬性捆綁起來的做法極大地簡化了UI中維護(hù)狀態(tài)變化與其它屬性變化的操作. 具體可參看如下Android文檔 -- ColorStateList.

    Android的TextView自身提供了很多state, 比如state_selected. 在實(shí)際使用中, 我們可以通過此屬性, 結(jié)合selector一起來實(shí)現(xiàn)某些需求 -- 同一字符串通過二元的顏色來標(biāo)明狀況的不同, 如一封郵件是否讀取過等等. 但如果此時(shí)使用state_selected會(huì)引起個(gè)問題 -- 如果此時(shí)真的'選中'了當(dāng)前的TextView, 就會(huì)引起不必要的'混亂'. 這是因?yàn)橄到y(tǒng)的'選中', 如使用方向鍵選中, 和代碼中的setSelected()是有相同效果的. 此時(shí)有何感想? 是不是真心覺得state不夠用呢?  因此 -- 

    今天咱們聊個(gè)好玩的 -- 自己定制state!

   基本思想很簡單 -- state是View的屬性項(xiàng), 那么為了定制state, 只需為View創(chuàng)建相應(yīng)的新的state屬性項(xiàng), 然后封裝個(gè)能處理此屬性的TextView類即可.

   1. 定義新的state屬性項(xiàng)
       在attrs.xml中(其實(shí)什么xml都可以, 只要放到res下能看到就好)定義新的state屬性.
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyCustomTextView">
        <attr name="state_unread" format="boolean" />
    </declare-styleable>
</resources>

    2. 創(chuàng)建新的TextView類
        繼承與TextView類, 創(chuàng)建自定義TextView類以處理新的state屬性.
public class MyCustomTextView extends TextView {
    
    

    private static final int[] STATE_UNREAD = { R.attr.state_unread };
    
    private boolean mIsUnread = false;
    
    
    
    public void setUnreadState(boolean isUnread) {
        mIsUnread = isUnread;
        refreshDrawableState();
    }
    
    @Override
    protected int[] onCreateDrawableState(int extraSpace) {
        final int[] state = super.onCreateDrawableState(extraSpace + 1);
        if (mIsUnread) {
            mergeDrawableStates(state, STATE_UNREAD);
        }
        return state;
    }
}
       
        a. 定義狀態(tài)屬性項(xiàng) -- private static final int[] STATE_UNREAD = { R.attr.state_unread };
        b. 定義狀態(tài)變量 -- private boolean mIsUnread = false;
        c. 新屬性set函數(shù) -- setUnreadState()
        d. 添加新屬性支持 -- 重載onCreateDrawableState()
        e. 搞定

    3. 在selector添加新屬性
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom
="http://schemas.android.com/apk/res-auto" >
    <item custom:state_unread="true" android:color="@color/theme_1" />
    <item android:state_selected="true" android:color="@color/theme_2" />
    <item android:color="@color/theme_0" />    
</selector>
        因?yàn)檫@個(gè)state_unread屬性是自定義的, 所以要注意添加其ns, 不然會(huì)有編譯錯(cuò)誤 -- 無法找到xxxx定義.


    Andoird的View提供了靈活的定制功能, 除了state可以如上自定義外, 其它的屬性, 比如Font什么的, 都是可以通過此方式實(shí)現(xiàn)自定義屬性添加的. 反過來, 為了'漂亮'的UI, app所使用的View最好都是'自定義'過的, 哪怕初始只是個(gè)簡單的繼承類, 等到'未來'需要擴(kuò)展時(shí), 你就懂了, 嘿嘿...


posted on 2013-10-09 17:37 codejie 閱讀(1310) 評(píng)論(0)  編輯 收藏 引用 所屬分類: G7

公告

Using C++

導(dǎo)航

統(tǒng)計(jì)

留言簿(73)

隨筆分類(513)

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区高清在线观看| 99精品99| 久久久99精品免费观看不卡| 香蕉av福利精品导航| 国产精品高清一区二区三区| 亚洲欧美精品中文字幕在线| 亚洲视频香蕉人妖| 国产午夜精品视频| 你懂的国产精品永久在线| 免费看成人av| 亚洲天堂激情| 欧美在线免费播放| 亚洲人www| 亚洲一区二区三区色| 韩国av一区| 欧美色欧美亚洲高清在线视频| 国产欧美日韩综合| 美日韩免费视频| 欧美日韩精品久久久| 久久久精品国产免费观看同学| 久热re这里精品视频在线6| 在线视频欧美日韩| 久久久xxx| 亚洲一二三四久久| 久久亚洲风情| 午夜亚洲福利| 猫咪成人在线观看| 午夜精品理论片| 欧美成年人在线观看| 欧美一区二区在线免费观看| 欧美高清hd18日本| 久久―日本道色综合久久| 日韩视频在线你懂得| 国产一区二区精品久久91| 亚洲肉体裸体xxxx137| 欧美日韩性生活视频| 久久久之久亚州精品露出| 欧美日韩国产在线播放| 国产亚洲精品自拍| 9色porny自拍视频一区二区| 激情成人av在线| 亚洲视频狠狠| 99国产精品99久久久久久粉嫩| 亚洲精品日韩综合观看成人91| 久久夜色精品国产| 国产精品乱码一区二区三区 | 欧美深夜影院| 欧美96在线丨欧| 国内精品国产成人| 亚洲女同同性videoxma| 亚洲图片在区色| 欧美日本一道本| 欧美电影电视剧在线观看| 国产精品毛片a∨一区二区三区|国| 亚洲国产精品视频| 一区二区视频免费完整版观看| 亚洲欧美大片| 性欧美videos另类喷潮| 国产精品v一区二区三区 | 国产精品手机在线| 99伊人成综合| 亚洲素人在线| 国产精品igao视频网网址不卡日韩| 亚洲国产精品一区二区www| 在线观看欧美精品| 久久中文字幕一区| 欧美国产成人在线| 亚洲精品久久| 欧美日韩成人激情| 中文精品在线| 久久国产精品久久久久久久久久| 国产欧美亚洲一区| 性色一区二区| 亚洲综合另类| 久久久人成影片一区二区三区| 国产亚洲制服色| 久久成人资源| 欧美va亚洲va国产综合| 亚洲人成啪啪网站| 欧美久久久久久久久久| 亚洲一区二区免费视频| 久久精彩视频| 亚洲高清视频一区| 欧美日产国产成人免费图片| 一本色道婷婷久久欧美| 久久国产加勒比精品无码| 18成人免费观看视频| 欧美精品v日韩精品v韩国精品v| 亚洲裸体在线观看| 欧美一区二区免费视频| 亚洲国产精品高清久久久| 亚洲国产精品一区二区第四页av | 国产精品视频免费观看www| 性一交一乱一区二区洋洋av| 欧美插天视频在线播放| 在线综合亚洲| 国产一区欧美| 欧美日韩国产美女| 欧美一区二区三区婷婷月色| 亚洲国产黄色| 午夜亚洲激情| 亚洲美女中文字幕| 国产婷婷一区二区| 欧美精品三级| 欧美在线一二三区| 这里是久久伊人| 亚洲综合好骚| 亚洲三级视频在线观看| 国产精品日韩专区| 欧美激情一区二区三区全黄| 性一交一乱一区二区洋洋av| 99re这里只有精品6| 美玉足脚交一区二区三区图片| 亚洲调教视频在线观看| 亚洲国产婷婷| 激情视频亚洲| 国产精品专区第二| 欧美日一区二区三区在线观看国产免| 久久精品91久久久久久再现| 亚洲深夜福利| 亚洲精品一区二区在线观看| 欧美不卡三区| 美日韩精品免费| 久久九九精品| 欧美一区二区三区四区视频| 亚洲深夜福利网站| 99re8这里有精品热视频免费| 在线国产精品一区| 久久婷婷麻豆| 久久精品夜色噜噜亚洲a∨| 亚洲欧美日韩国产中文在线| 99国产一区| 99国产精品99久久久久久| 亚洲国产一成人久久精品| 欧美88av| 亚洲国产婷婷| 91久久久精品| 午夜欧美大片免费观看| 亚洲电影av在线| 欧美高清视频一区二区三区在线观看 | 99视频在线精品国自产拍免费观看| 亚洲第一在线综合网站| 在线播放日韩| 亚洲国产综合91精品麻豆| 91久久国产自产拍夜夜嗨| 亚洲国产精品久久久久婷婷884 | 欧美日韩国产综合久久| 欧美日韩在线播放| 国产精品久久久久9999| 国产精品一区二区黑丝| 国产日韩欧美在线观看| 国内精品免费午夜毛片| 亚洲第一福利在线观看| 亚洲精品免费在线播放| 一区二区av在线| 亚洲自拍高清| 久久av资源网| 久久亚洲精选| 亚洲高清资源| 9i看片成人免费高清| 亚洲在线视频| 麻豆精品国产91久久久久久| 欧美1区免费| 亚洲高清在线| 亚洲自拍电影| 麻豆精品视频在线| 欧美精品综合| 国产日韩欧美一区二区| 亚洲国产精品久久久久| 亚洲一区二区视频| 久久偷窥视频| 亚洲国产精品久久久久婷婷老年 | 美女福利精品视频| 亚洲精品网址在线观看| 午夜精品视频在线| 牛牛国产精品| 久久久久久久久久久成人| 亚洲欧美三级在线| 亚洲高清成人| 亚洲欧美日韩中文视频| 欧美成人免费视频| 午夜精品久久久久久久久久久久久 | 亚洲欧美乱综合| 可以免费看不卡的av网站| 亚洲精品美女91| 久久九九热re6这里有精品| 欧美日韩ab| 亚洲大胆人体视频| 欧美有码视频| 亚洲日本免费电影| 久久精品日韩一区二区三区| 国产精品国产福利国产秒拍| 亚洲国产高清一区| 久久精品导航| 在线一区二区三区做爰视频网站 | 夜夜嗨av一区二区三区四区| 老巨人导航500精品| 国产日韩成人精品| 亚洲一级片在线观看| 亚洲国产你懂的|