1

我在 WindowManager.LayoutParams.TYPE_TOAST 级别图层上有一个带有按钮的叠加视图。该按钮在 Android 4.2 中运行良好,但是当我在 Android 4.3 中运行相同的代码时,该按钮变得无法点击 - 当我点击它时没有任何反应。

这是相关的代码。

ButtonOverlayService.java

@Override
public IBinder onBind(Intent intent) {
    return null;
}

public class ButtonOverlayService extends Service {
    WindowManager wm;
    View home_button_view;

    @Override
    public void onCreate() {
        super.onCreate();

        WindowManager.LayoutParams home_params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                -10000,
                10000,
                WindowManager.LayoutParams.TYPE_TOAST,
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                PixelFormat.TRANSLUCENT);

        wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);

        LayoutInflater layoutInflater = LayoutInflater.from(this);
        home_button_view = layoutInflater.inflate(R.layout.home_button_overlay, null);
        home_button_view.findViewById(R.id.home_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i("myApp", "clicked")
            }
        }

        wm.addView(home_button_view, home_params);
    }
}

home_button_overlay.xml

<?xml version="1.0" encoding="utf-8"?>

<Button
    android:id="@+id/home_button"
    android:layout_width="100dp"
    android:layout_height="100dp"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#85ff3f"
    android:padding="0dp"
    android:paddingEnd="0dp"
    android:paddingStart="0dp"
    android:gravity="fill"></Button>

有人知道吗?

4

1 回答 1

2

用于WindowManager.LayoutParams.TYPE_SYSTEM_ALERT在 4.3 中使视图可点击。

TYPE_TOAST不再允许点击。

于 2014-01-15T11:28:16.497 回答