[英]Android: inflated view do not show in customed ViewGroup
我通過擴展ViewGroup來創建了一個自定義視圖,我的問題是:
在將子視圖(addView(chileView))添加到ViewGroup中時,如果子視圖是膨脹視圖,則不會顯示該子視圖。 但是當子視圖是硬代碼視圖(例如btn = new Button(ctx))時,它將顯示!
代碼,不顯示:
public class EdgeSwiper extends ViewGroup{
public EdgeSwiper(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public EdgeSwiper(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public EdgeSwiper(Context context) {
super(context);
init(context);
}
View v;
private void init(Context context) {
v = View.inflate(context,R.layout.aview,null);
this.addView(v);
}
@Override
protected void onLayout(boolean arg0, int a, int b, int c, int d) {
v.layout(a, b, c, d);
}
}
在認真思考了我能想到的所有內容之后,我創建了一個與此相同的虛擬項目,以檢驗幾種可能性。 由於某種原因,讓ViewChanger從FrameLayout而不是ViewGroup擴展就可以完成這項工作-很有可能是因為ViewGroup缺少呈現其chidl視圖所需的內容(我嘗試覆蓋onDraw,但仍然無法正常工作)。 由於您一次只顯示一個視圖-FrameLayout的通常用法-我建議您進行此更改; 這比隔離和修復ViewGroup中缺少的繪制功能要容易得多。
public class EdgeSwiper extends FrameLayout {
應該是您要使原始設計(從構造函數添加視圖)正常工作所需進行的唯一更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.