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_ALERT4.3 でビューをクリック可能にするために使用します。

TYPE_TOASTクリックを許可しなくなりました。

于 2014-01-15T11:28:16.497 に答える