2014-02-19 132 views
0

我試圖讓自己的基本'幫助覆蓋'。我已經實現了這麼多目前爲止Take a lookAndroid 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

這裏的代碼是(非最終)結果Take a look

+0

我沒有得到你想要達到的目標,但是你做錯了。你考慮過PopupWindow嗎? –

+0

基本上突出顯示屏幕上的某個元素[見這裏](http://acko.net/files/android/app-drawer.png)。說實話,我並不知道彈出窗口。看起來很有趣。 – rperryng

+0

上面的屏幕截圖只是一個全屏ImageView覆蓋。無論如何,看看PopupWindow。據我所知,你需要顯示一個掛鉤到一個視圖。這就是它的作用。 –

回答