ViewStub踩坑

ViewStub 是一個(gè)寬高都為0,不可見的(GONE),不參與measure與layout(絕大部分情況),不繪制任何東西,可以用來做懶加載的View,常用于布局優(yōu)化。

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

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

優(yōu)點(diǎn)

  1. 內(nèi)存耗費(fèi)很小

  2. 占位特性

  3. 不可見

  4. 一次調(diào)用

    ViewStub只能加載一次,重復(fù)加載會(huì)導(dǎo)致異常,這是因?yàn)閂iewStub只要加載過一次,其自身就會(huì)被移除(并非銷毀),把并自身所包含的內(nèi)容全部傳給父布局。


下面的才是關(guān)鍵:

當(dāng)ViewStub里面的TextView進(jìn)行文字改變的時(shí)候,寬度發(fā)生變化,可以使用以下方法進(jìn)行處理:

private void setLatestWidth() {
        ViewGroup.LayoutParams params = mMsgUnreadLocationView.getLayoutParams();
        params.width = ViewGroup.LayoutParams.WRAP_CONTENT;
        mMsgUnreadLocationView.setLayoutParams(params);
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容