簡體   English   中英

Android:膨脹視圖不會顯示在自定義ViewGroup中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM