Android中文API-ViewStub

來源:互聯網
上載者:User

標籤:ext   int   關注   style   inflate   find   tin   作者   mic   

ViewStub控制項是一個不可見,0尺寸得惰性控制項。當ViewStub控制項設定可見,或者調用inflate(),並運行完畢之後,ViewStub所指定的layout資源就會被載入。這個ViewStub就會被新載入的layout檔案取代。

ViewStub也會從其父控制項中移除。

因此ViewStub存在view Hierarchy中的生存期為直到ViewStub運行了setVisable(int)或者inflate()方法。

    在setVisable或者inflate方法運行完成。被載入的Layout檔案伴隨著ViewStub的屬性設定一起被增加ViewStub的父控制項中。


    你能夠定義或者重寫被載入layout檔案的id屬性。

比如:

<ViewStub android:id="@+id/stub"               android:inflatedId="@+id/subTree"               android:layout="@layout/mySubTree"               android:layout_width="120dip"               android:layout_height="40dip" />

    這個定義的ViewStub控制項能夠通過設定的id“stub”找到。在成功擷取subTree制定的kayout之後,ViewStub就從其父控制項中移除了,被載入的mySubTree,能夠通過id“subTree”找到。從以上的代碼屬性設置來說,終於載入的Layout檔案,會以寬120dp,高40dp展示。

    通過下面方式,能夠使ViewStub展示出其所代表的layout檔案。


   ViewStub stub = (ViewStub) findViewById(R.id.stub);     View inflated = stub.inflate(); 

當inflate()運行完畢,Viewstub就被替換掉了,inflate返回的View就是mySubTree這個布局檔案的View。所以就不須要運行額外的findById了。

    值得注意的是:ViewStub在Api1的時候就已經提供了,可是在api16的時候,添加了一個方法:

public void setLayoutInflater (LayoutInflater inflater)

這種方法攻克了,不能指定LayoutInflater 的問題,這涉及了Context的使用。

    假設你在低於Api16的開發中,遇到找到不你載入View 的 id的情況,那多數情況是。Context出了問題。在低於api16的情況下,解決方案有兩種:

(1)自己定義ViewStub

(2)在V7包中。使用ViewStubCompat類。


作者有話說:假設你須要或者Android中文API。請掃一掃以下的二維碼,您的關注。就是我的動力。




Android中文API-ViewStub

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.