我試圖讓自己的基本'幫助覆蓋'。我已經實現了這麼多目前爲止Android addView StackOverFlow錯誤
這是通過調用addContentView
與傳入的自定義視圖的實例完成的。但是,我將只能隱藏自定義視圖,而不是在完成後完全刪除它它。
到目前爲止,這是非常基本的,所以沒有天才或pizazz呢。我正在努力進一步改進其易用性。 https://stackoverflow.com/a/10217050/3194316此堆棧溢出答案建議將內容視圖設置爲動態創建的Framelayout並使視圖膨脹。我已經添加了代碼
FrameLayout layout = new FrameLayout((Context) activity);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
layout.setLayoutParams(layoutParams);
View parentView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
((ViewGroup) parentView.getParent()).removeAllViews();
activity.setContentView(layout);
layout.addView(parentView);
layout.addView(this);
其中this
是設定如下所示的覆蓋自定義視圖的一個實例。 activity
是其中介紹的活動的一個實例。我最初得到parentView
已經有父母的錯誤,所以這就是爲什麼View parentView = activity.getWindow().getDecorView().findViewById(android.R.id.content); ((ViewGroup) parentView.getParent()).removeAllViews();
被添加的原因。我現在不幸地收到堆棧溢出錯誤,我似乎無法理解爲什麼。有沒有更好的方法來處理這種情況?
SOLUTION
在彈出窗口結束語一切都使得整個覆蓋到正確的Android系統被解僱。
FrameLayout layout = new FrameLayout(context.get());
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
layout.setLayoutParams(layoutParams);
LayoutInflater inflater = (LayoutInflater) context.get().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
View overlayBase = inflater.inflate(R.layout.help_frame, null, false);
layout.addView(this);
layout.addView(overlayBase);
popupWindow = new PopupWindow(context.get());
popupWindow.setContentView(layout);
popupWindow.setWindowLayoutMode(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
popupWindow.showAtLocation(this, Gravity.CENTER, 0, 0);
背景是自定義視圖中的一流水平WeakReference的變量,在構造函數被調用
如果有人有興趣實例,這裏是我用來創建popupwindow
這裏的代碼是(非最終)結果
我沒有得到你想要達到的目標,但是你做錯了。你考慮過PopupWindow嗎? –
基本上突出顯示屏幕上的某個元素[見這裏](http://acko.net/files/android/app-drawer.png)。說實話,我並不知道彈出窗口。看起來很有趣。 – rperryng
上面的屏幕截圖只是一個全屏ImageView覆蓋。無論如何,看看PopupWindow。據我所知,你需要顯示一個掛鉤到一個視圖。這就是它的作用。 –