2017-06-12 29 views
0

是否可以使用本地Android部件膨脹ViewStub?使用本機部件膨脹ViewStub

例如:

<LinearLayout...> 
<TextView...> 
<TextView...> 
<ViewStub...> 
</LinearLayout> 

我想替換/與交換機或一個複選框充氣ViewStub。那可能嗎?

+0

你看過這裏嗎? https://stackoverflow.com/a/37442268/2910520,你需要的是同樣的東西 – MatPag

+0

是的,我做到了。這與我試圖膨脹的佈局並不是一回事,而是一個原生的Android小部件。我沒有明確的佈局。 – Vas

+0

你應該創建一個新的佈局來表示你想膨脹的東西。目前沒有辦法在StubView中膨脹一個View對象 – MatPag

回答

0

設置佈局膨脹到ViewStub之一:

設置通過XML佈局:

<ViewStub 
    android:id="@+id/stub" 
    android:inflatedId="@+id/myLayout" 
    android:layout="@layout/myLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

或者,在運行時設置的佈局:

viewStub.setLayoutResource(R.layout.myLayout); 

然後,可以使ViewStub充氣。

View inflatedView = viewStub.inflate(); 

你可以稱之爲從那裏你想要的,如SwitchCheckbox被點擊(因爲你問)這個inflate()方法。

+0

那麼如果我想膨脹一個原生的android開關小部件,它應該設置什麼佈局資源? – Vas

+0

您可以創建一個包含Switch小部件的佈局文件。然後膨脹該佈局資源。 –

0

目前無法用View對象代替StubView。您必須創建代表您要替換的視圖的佈局。因此,舉例來說,如果你想用一個單一的CheckBox打開它,你需要這樣的

<?xml version="1.0" encoding="utf-8"?> 
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/my_checkbox" 
    android:text="Click me" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

然後調用

viewStub.setLayoutResource(R.layout.my_checkbox); 
viewStub.inflate(); 

創建佈局如果需要,你可以膨脹的視圖的引用用這個代替

CheckBox checkInflated = (CheckBox)viewStub.inflate();