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

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>
            国产精品v欧美精品∨日韩| 亚洲一区日韩在线| 亚洲一区二区动漫| 亚洲天堂男人| 午夜精品剧场| 久久国产精品电影| 久久久777| 亚洲成在人线av| 亚洲精选视频在线| 亚洲——在线| 久久久久综合网| 欧美丝袜一区二区三区| 国产欧美高清| 亚洲日本激情| 欧美在线观看天堂一区二区三区| 久久国产乱子精品免费女| 欧美成人小视频| 亚洲视频一区二区| 久久精品女人的天堂av| 欧美日韩精品一二三区| 国产美女在线精品免费观看| 亚洲国产精品久久久久秋霞不卡| 一二三区精品| 久久亚洲欧美| av成人毛片| 久热精品视频| 国产欧亚日韩视频| 亚洲靠逼com| 久久久久久久久久久久久久一区| 亚洲人成在线观看一区二区 | 久久久久国产精品午夜一区| 亚洲大片精品永久免费| 亚洲一区二区毛片| 欧美精品xxxxbbbb| 影音欧美亚洲| 欧美一区二区免费| 日韩亚洲欧美一区| 免费观看不卡av| 国产精品你懂得| 日韩视频在线免费观看| 久久久久.com| 亚洲一区二区三区中文字幕在线| 麻豆精品传媒视频| 国产手机视频精品| 亚洲无线视频| 亚洲日本中文字幕| 欧美成人精品不卡视频在线观看| 国产午夜亚洲精品理论片色戒 | 久久久久欧美精品| 亚洲视频二区| 亚洲激情欧美激情| 久久资源av| 黑人中文字幕一区二区三区| 亚洲欧美国产视频| 亚洲第一区中文99精品| 午夜视频久久久| 99精品视频免费在线观看| 欧美激情bt| 亚洲日本欧美天堂| 欧美成人综合一区| 免费av成人在线| 亚洲国产三级网| 欧美高清视频在线观看| 久久理论片午夜琪琪电影网| 久久久久成人网| 亚洲国产经典视频| 麻豆精品国产91久久久久久| 亚欧成人精品| 合欧美一区二区三区| 欧美一站二站| 欧美亚洲专区| 国产综合自拍| 免费亚洲电影在线| 久久免费视频在线| 亚洲欧洲三级电影| 亚洲日本理论电影| 欧美午夜影院| 校园春色国产精品| 欧美亚洲网站| 亚洲国产天堂久久综合网| 欧美韩日精品| 欧美日韩日韩| 性色av一区二区怡红| 欧美怡红院视频| 狠狠色狠狠色综合日日91app| 久久久久中文| 欧美xx69| 午夜精品影院| 久久久久久国产精品mv| 亚洲人成在线观看一区二区| 亚洲老板91色精品久久| 国产精品一区二区久激情瑜伽| 久久精品国产精品亚洲| 狂野欧美激情性xxxx| 一区二区三区精密机械公司 | 亚洲一级黄色av| 国产在线不卡精品| 亚洲激情国产精品| 国产一区二区av| 亚洲福利国产| 国产精品蜜臀在线观看| 美腿丝袜亚洲色图| 欧美色欧美亚洲另类七区| 久久精品成人欧美大片古装| 美女久久一区| 欧美一级在线播放| 欧美成人小视频| 欧美一级大片在线观看| 久久综合久色欧美综合狠狠| 国产精品视频一| 免费观看成人| 国产精品人人做人人爽| 亚洲国产精品一区制服丝袜| 国产精品日韩一区| 亚洲国产高清自拍| 国产亚洲精品自拍| 99国产精品| 欧美韩国日本一区| 久久久成人精品| 欧美日韩在线亚洲一区蜜芽| 欧美成人一品| 国产亚洲欧美一区二区| 日韩网站免费观看| 亚洲美洲欧洲综合国产一区| 久久精品国产一区二区电影| 亚洲在线视频一区| 欧美精品福利| 亚洲电影免费观看高清完整版在线| 国产欧美韩日| 亚洲一区二区日本| 中文日韩欧美| 欧美精品久久久久久久久久| 你懂的一区二区| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲在线视频网站| 性欧美精品高清| 国产精品私拍pans大尺度在线| 日韩视频亚洲视频| 夜夜嗨av一区二区三区网页| 欧美成人视屏| 亚洲国产女人aaa毛片在线| 亚洲电影激情视频网站| 久久久亚洲国产美女国产盗摄| 欧美影视一区| 国产亚洲免费的视频看| 亚洲欧美日韩在线一区| 久久av资源网| 国内精品久久久久久影视8| 欧美一级电影久久| 久久亚洲影音av资源网| 黄色亚洲在线| 久热精品视频在线观看| 亚洲国产日韩欧美在线99| 91久久精品国产| 欧美粗暴jizz性欧美20| 亚洲精品久久久久久一区二区| 亚洲精品无人区| 欧美日韩国产影片| 亚洲线精品一区二区三区八戒| 亚洲欧美日韩国产精品| 国产美女精品在线| 久久久国产精品亚洲一区| 快播亚洲色图| 亚洲人午夜精品免费| 欧美日韩国产天堂| 亚洲午夜久久久久久尤物| 欧美一区国产二区| 一区二区三区我不卡| 欧美激情一区二区三级高清视频| 亚洲老板91色精品久久| 亚洲欧美日韩直播| 一区二区三区在线看| 欧美精品免费在线| 亚洲欧美日韩综合国产aⅴ| 欧美成人官网二区| 亚洲美女性视频| 久久精品国产久精国产思思| 在线观看国产成人av片| 欧美日韩国产999| 老牛嫩草一区二区三区日本| 亚洲欧洲美洲综合色网| 国产精品久久久久999| 久久九九热免费视频| 亚洲精品日产精品乱码不卡| 久久精品二区| 一区二区三区久久| 黄色一区二区在线观看| 欧美国产三区| 久久成人精品视频| 99re国产精品| 欧美不卡一卡二卡免费版| 亚洲综合成人婷婷小说| 亚洲高清在线| 国产手机视频精品| 欧美日韩国产不卡| 老司机凹凸av亚洲导航| 欧美一区二区视频免费观看| 一区二区三区欧美在线观看| 免费欧美视频| 久久久久国产一区二区|