2017-04-13 49 views
0

時,這是我的佈局文件:按鈕在SurfaceView的頂部增加了窗口管理

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@android:color/transparent" 
android:orientation="vertical"> 

<SurfaceView 
    android:id="@+id/mediaView" 
    android:layout_width="300dp" 
    android:layout_height="200dp" 
    android:background="@android:color/transparent" /> 

<Button 
    android:id="@+id/btnClose" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="close" /> 

</FrameLayout> 

這是我如何增加一條,作爲System alert windows

// hiển thị floating view 
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, 
      PixelFormat.TRANSLUCENT); 

    params.gravity = Gravity.TOP | Gravity.LEFT; 
    params.x = 0; 
    params.y = 100; 

    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
    windowManager.addView(abovedFrameLayout, params); 

我在這裏的問題是,無論什麼我嘗試,該按鈕從未顯示。它總是在SurfaceView之下。我測試了:mSurfaceView.setZOrderMediaOverlay(false);mSurfaceView.setZOrderOnTop(false);,但似乎沒有工作。你有什麼建議嗎?謝謝。

+0

可以使用線性佈局,而不是Framelayout –

+0

@MCZ我使用線性佈局,但仍然是t他的表面視圖與Button重疊。 –

+0

我提交了一個剪下的代碼,希望它有幫助 –

回答

1

試試這個,你應該使用的RelativeLayout

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <SurfaceView 
     android:id="@+id/mediaView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 


    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     android:layout_gravity="bottom" 
     android:padding="20dp"> 

     <Button 
      android:id="@+id/btnClose" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="close" /> 

    </RelativeLayout> 

</FrameLayout> 
+0

我沒有在這裏看到任何不同。 –

1

此代碼測試,surfaceviewer和鈕未重疊 XML佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@android:color/transparent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/btnClose" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="close" /> 

    <SurfaceView 
     android:id="@+id/mediaView" 
     android:layout_width="300dp" 
     android:layout_height="200dp" 
     android:background="@android:color/transparent" /> 

</LinearLayout> 

Acitivy:

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
     WindowManager.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.WRAP_CONTENT, 
     WindowManager.LayoutParams.TYPE_TOAST, 
     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, 
     PixelFormat.TRANSLUCENT); 

params.gravity = Gravity.TOP | Gravity.LEFT; 
params.x = 0; 
params.y = 100; 

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

ImageView v = new ImageView(surfaceview.this); 
v.setBackgroundResource(R.drawable.nimbledroid); 
windowManager.addView(v, params);