Добавить представление поверх всех видов деятельности

Я разрабатываю приложение для Android. Я хочу, чтобы иметь возможность добавлять один вид по коду, который нарисован в верхней части всех действий в приложении.

Я попытался добавить его в оконный менеджер:

LayoutInflater inflater = activity.getLayoutInflater(); layout = inflater.inflate(R.layout.toast_layout, null); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.gravity = Gravity.BOTTOM; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.type = WindowManager.LayoutParams.TYPE_TOAST; final WindowManager mWindowManager = (WindowManager); activity.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); mWindowManager.addView(layout, params); 

Однако, добавляя это, я сталкиваюсь с двумя проблемами:

1. Макет все еще отображается, когда я выхожу из своего приложения.

2. Макет не отвечает на события Click.

Есть ли еще одно решение для этого?

Благодарю.

Solutions Collecting From Web of "Добавить представление поверх всех видов деятельности"

LayoutParams тип LayoutParams с TYPE_TOAST на TYPE_APPLICATION и удалите предыдущие флаги, которые я предложил,

И создайте одно BaseActivity для всех действий в вашем приложении, в этом Activity in onResume() добавьте этот View в WindowManager и в onPause() , удалите этот View,

  windowManager.removeView(view); 

1) Создайте BaseActivity, который расширяет Activity.

2) Теперь вся ваша деятельность должна расширять BaseActivity вместо Activity

3) Переопределить метод setContentView ().

4) создайте пустую вертикальную линейную линию в этом методе.

5) Добавьте свой topView в этот макет

6) И затем добавьте завышенный вид в этот линейный выход

7) И, наконец, вызовите super.setContentView (passLinearLayoutHere)

Как это реализовать?

 import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; public class BaseActivity extends Activity { @Override public void setContentView(int resId) { LinearLayout screenRootView = new LinearLayout(this); screenRootView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); screenRootView.setOrientation(LinearLayout.VERTICAL); // Create your top view here View topView = new View(this); // Replace this topview with your view LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View screenView = inflater.inflate(resId, null); topView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //You will get onclick here of your topview in whatever screen it is clicked } }); screenRootView.addView(topView); screenRootView.addView(screenView); super.setContentView(screenRootView); } } 

Чтобы управлять представлением / представлением представления, я использовал решение, предложенное Гопалом. Я добавил события onStop и onResume, чтобы при скрытии приложения было скрыто.

Для событий кликов я понял, что тип тоста не отвечает на события кликов. Поэтому я изменил тип

 params.type = WindowManager.LayoutParams.TYPE_TOAST; 

в

 params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; 

Я также должен добавить следующее разрешение:

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>