Перетаскиваемое плавающее окно в приложении Android: не фокусируется на элементах макетаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Перетаскиваемое плавающее окно в приложении Android: не фокусируется на элементах макета

Сообщение Anonymous »

В моем приложении я делаю окно плавающего типа, которое появляется поверх любого приложения или домашнего экрана. Как пузырь чата в Facebook. Я сделал плавающее окно Перетащить Гейбл с некоторыми кнопками для разных действий. У меня есть макет EditText в окне. У меня возникают проблемы с фокусировкой на плавающем окне. Каждый макет не сбит, и текст редактирования также не работает. < /p>

Мой код:-< /p>

in service oncreate () {} < /p>

mFloatingWidget = LayoutInflater.from(this).inflate(R.layout.layout_floating_widget, null);
int layoutType;
if(Build.VERSION.SDK_INT < 26) {
layoutType = WindowManager.LayoutParams.TYPE_PHONE;
} else {
layoutType = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
}

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
layoutType,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);

params.gravity = Gravity.TOP | Gravity.START;
params.x = 0; // Initial Position of window
params.y = 100; // Initial Position of window
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mFloatingWidget, params);

mFloatingWidget.findViewById(R.id.root_container).setOnTouchListener(new View.OnTouchListener() {
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("AD","Action E" + event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("AD","Action Down");
initialX = params.x;
initialY = params.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
return true;
case MotionEvent.ACTION_UP:
Log.d("AD","Action Up");
int Xdiff = (int) (event.getRawX() - initialTouchX);
int Ydiff = (int) (event.getRawY() - initialTouchY);
if (Xdiff < 10 && Ydiff < 10) {
if (isViewCollapsed()) {
collapsedView.setVisibility(View.GONE);
expandedView.setVisibility(View.VISIBLE);
}
}
return true;
case MotionEvent.ACTION_MOVE:
Log.d("AD","Action Move");
params.x = initialX + (int) (event.getRawX() - initialTouchX);
params.y = initialY + (int) (event.getRawY() - initialTouchY);
mWindowManager.updateViewLayout(mFloatingWidget, params);
return true;
}
return false;
}
});

}
< /code>

< /p>

Пожалуйста, дайте мне знать, что не так.>

Подробнее здесь: https://stackoverflow.com/questions/586 ... t-elements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»