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

Codejie's C++ Space

Using C++

Android DEV : Custom new state for TextView


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

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

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

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

   1. 定義新的state屬性項
       在attrs.xml中(其實什么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. 創建新的TextView類
        繼承與TextView類, 創建自定義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. 定義狀態屬性項 -- private static final int[] STATE_UNREAD = { R.attr.state_unread };
        b. 定義狀態變量 -- private boolean mIsUnread = false;
        c. 新屬性set函數 -- 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>
        因為這個state_unread屬性是自定義的, 所以要注意添加其ns, 不然會有編譯錯誤 -- 無法找到xxxx定義.


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


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

公告

Using C++

導航

統計

留言簿(73)

隨筆分類(513)

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产91| 免费观看欧美在线视频的网站| 性伦欧美刺激片在线观看| 一区二区三区四区国产精品| 亚洲精品极品| 亚洲伦理一区| 夜夜夜久久久| 午夜国产精品影院在线观看| 久久av二区| 欧美sm重口味系列视频在线观看| 欧美国产视频日韩| 亚洲黄色精品| 亚洲精品一区二区三区四区高清| 亚洲天堂黄色| 久久久www免费人成黑人精品| 免费国产一区二区| 欧美片在线观看| 国产偷自视频区视频一区二区| 一区二区三区在线视频免费观看| 亚洲精品久久久久| 亚洲欧美一区二区视频| 久久久久99| 亚洲精品免费网站| 亚洲欧美久久| 美腿丝袜亚洲色图| 国产精品嫩草久久久久| 揄拍成人国产精品视频| 中国成人在线视频| 欧美va日韩va| 欧美一级黄色录像| 欧美日韩在线一区二区| 久久精品五月婷婷| 日韩网站免费观看| 久久激情久久| 一本不卡影院| 欧美激情视频在线播放| 影音欧美亚洲| 欧美一区2区三区4区公司二百| 欧美激情在线有限公司| 欧美中文在线观看| 国产精品青草综合久久久久99| 亚洲人成绝费网站色www| 午夜国产不卡在线观看视频| 亚洲国产综合在线看不卡| 久久精品欧美| 国产精品一卡二卡| 亚洲深夜福利网站| 91久久久久| 久久亚洲高清| 国产一区二区黄色| 欧美一区二区三区在| 日韩一级片网址| 免费看成人av| 亚洲欧洲视频| 欧美激情免费在线| 免费看的黄色欧美网站| 亚洲国产精品女人久久久| 美日韩免费视频| 久久精品视频免费观看| 国产综合av| 美女黄网久久| 久久午夜电影| 日韩亚洲视频在线| 日韩一级免费| 国产精品主播| 久久免费黄色| 久久精品在线| 亚洲国产一区视频| 亚洲激情影视| 欧美三级在线| 香蕉久久久久久久av网站| 亚洲欧美日韩精品一区二区| 国产伦精品一区二区三区| 久久国产乱子精品免费女 | 久久深夜福利| 亚洲国产女人aaa毛片在线| 欧美成人精品不卡视频在线观看| 久久在线精品| 亚洲美女在线视频| 夜夜躁日日躁狠狠久久88av| 国产精品一区二区在线观看| 久久免费视频在线| 久久综合99re88久久爱| 夜夜嗨av一区二区三区四区| 一区二区三区av| 国产在线精品成人一区二区三区 | 欧美国产日韩精品免费观看| 欧美成人视屏| 亚洲主播在线| 久久不射网站| 亚洲精品一区中文| 亚洲一区二区三| 在线日韩av| 夜夜嗨av色一区二区不卡| 国产日韩欧美一区二区三区四区| 美女诱惑黄网站一区| 欧美午夜精品一区二区三区| 久久亚洲一区| 国产精品国产三级国产专播品爱网| 久久久精品网| 欧美视频一区二区三区在线观看 | 国产精品区一区二区三| 久久精品成人一区二区三区| 久久精品在线| 欧美一区=区| 国产欧美综合一区二区三区| 91久久久久久久久| 亚洲最黄网站| 欧美视频精品在线| 99精品视频一区| 午夜精品理论片| 国际精品欧美精品| 欧美高清视频在线观看| 一区二区精品国产| 亚洲欧美日韩精品久久奇米色影视 | 麻豆精品在线观看| 激情av一区二区| 欧美激情一区二区三级高清视频| 新狼窝色av性久久久久久| 性欧美超级视频| 日韩性生活视频| 国产精品久久久久毛片软件| 国产精品超碰97尤物18| 欧美在线精品免播放器视频| 国产精品电影观看| 欧美午夜精品伦理| 9色精品在线| 美日韩免费视频| 久久久久久久性| 国产精品成人在线| 最新日韩av| 亚洲国产综合在线| 久久嫩草精品久久久久| 欧美在线观看视频在线| 国产精品美女www爽爽爽视频| 亚洲精品一区在线| 亚洲美女淫视频| 欧美日韩a区| 日韩一区二区精品视频| 一区二区不卡在线视频 午夜欧美不卡'| 久久亚洲影音av资源网| 久久久人成影片一区二区三区观看 | 久久久99久久精品女同性| 欧美视频成人| 亚洲色图自拍| 欧美一区二区三区视频在线 | 夜夜爽99久久国产综合精品女不卡| 91久久精品一区| 欧美精品一卡二卡| 亚洲精品一区在线观看| 亚洲永久免费观看| 国产精品日韩欧美| 欧美一区二区私人影院日本 | 亚洲深夜影院| 国产女主播一区| 久久久久久久综合狠狠综合| 欧美成人免费网| 亚洲精品一区二区三区樱花| 欧美久久久久久久久| 99热在线精品观看| 久久久久久久综合日本| 狠狠干综合网| 欧美老女人xx| 亚洲自拍16p| 免费成人性网站| 亚洲片在线观看| 国产精品久久久久久久午夜片| 午夜精品一区二区三区电影天堂 | 男同欧美伦乱| 亚洲女与黑人做爰| 伊人久久大香线蕉av超碰演员| 牛牛精品成人免费视频| 国产精品99久久久久久有的能看 | 亚洲一区在线免费观看| 欧美日韩一级黄| 久久久久国产一区二区三区四区 | 亚洲人成网站色ww在线| 欧美麻豆久久久久久中文| 亚洲在线播放电影| 亚洲国产成人在线播放| 午夜精品短视频| 亚洲国产欧美日韩精品| 国产精品日韩欧美大师| 老牛嫩草一区二区三区日本| 一区二区精品| 亚洲国产精品一区二区久 | 亚洲娇小video精品| 国产精品久久久久久久久久尿| 久久久久国内| 午夜精品福利一区二区三区av| 亚洲激情综合| 久久夜色精品国产| 亚洲线精品一区二区三区八戒| 伊人久久成人| 国产一区清纯| 国产九九精品| 欧美日韩在线视频一区| 欧美成人三级在线| 麻豆精品在线视频| 久久久久久久一区二区三区|