每個控制項都有很多屬性 而對於一些屬性會有其預設值 而這些預設值是**來的?
我們會想到style或者theme 可往往我們使用textview或者一些常用的控制項的時候並沒有宣告 style屬性 或者theme屬性啊
下面以最常用的textview來進行分析
我們知道 開發中縮寫的xml 布局檔案 最後都會被解析成為乙個物件
勢必會呼叫構造方法來建立物件
下面我們來看看textview的構造方法
public textview(context context)
public textview(context context,
attributeset attrs)
@suppresswarnings("deprecation")
public textview(context context,
attributeset attrs,
int defstyle)
textview 共有3個構造方法 android提供的控制項 都會有3個構造方法
第乙個構造方法 需要我們傳入乙個context物件 一般用於在**中建立物件
而第二三個構造方法 則是在xml解析成物件時呼叫
當控制項沒有指定style時呼叫第二個構造方法
指定了style時呼叫第三個
對於textview 我們一般不指定style 此時就會呼叫第二個構造方法
public textview(context context,
attributeset attrs)
可以看到這裡呼叫了第三個構造方法
public textview(context context,
attributeset attrs,
int defstyle) {}
分析一下引數:
context 是上下文環境 由系統提供
attrs 是解析xml檔案中 控制項的屬性(id,layout_height等)得來的 可以視為乙個容器
defstyle 是第二個建構函式傳進來的
com.android.internal.r.attr.textviewstyle
可以看出這是乙個id引用物件 在系統attr.xml檔案中定義
由此可知當我們沒有為控制項指定style時 會使用乙個預設style
那麼這個預設style從哪來的啊 我們也並沒有為這個textviewstyle設定值啊 ?
答案是 在activity的theme中指定了textviewstyle
以上就是textview的預設屬性了
總結:
控制項的預設值在style中指定
當不指定控制項style 會使用預設的style
而預設的style的值則在theme中指定
下面分析
typedarray a=context.obtainstyledattributes(attrs, com.android.internal.r.styleable.textview, defstyle, 0);
這個obtainstyledattributes可以理解為使用attrs 和defstyle 對com.android.internal.r.styleable.textview中的屬性進行解析
我們知道 attrs是xml布局檔案中控制項指定的屬性值 而defstyle 是style中指定屬性值
而com.android.internal.r.styleable.textview 是在scheme中即attrs.xml中定義的屬性
所以把attrs 和defstyle的值匹配到com.android.internal.r.styleable.textview的屬性上
mthumbdrawable = a.getdrawable(r.styleable.switch_thumb);
mtrackdrawable = a.getdrawable(r.styleable.switch_track);
mtexton = a.gettext(r.styleable.switch_texton);
mtextoff = a.gettext(r.styleable.switch_textoff);
最後通過以上**得到屬性值
React中的屬性校驗和預設屬性
一,在react中props是元件對外暴露的介面,但通常元件並不會明顯的申明他會暴露那些介面及型別,這不太利於元件的復用,但比較好的是react提供了proptypes這個物件用於校驗屬性的型別,proptypes包含元件屬性的所有可能型別,以下我們通過乙個示列來說明 物件的key是元件的屬性名,v...
Android的控制項
一 textview 顯示文字的控制項 1 android text設定文字框內文字內容 2 android autolink是否將符合指定格式的文字轉換為可單擊的超連結形式 取值範圍 none web email phone map all 3 android singleline為true文字框...
Android常用的控制項
常用控制項例項介紹 幫助你更快的入門android 1 android初級控制項的使用 textview控制項的使用 button控制項的使用方法 edittext控制項的使用方法 imageview的使用方法 radiobutton的使用方法 checkbox的使用方法 menu的使用方法 2 a...