Android: возможно ли открыть всплывающее окно в виде софт-клавиатуры?
Мне сложно реализовать popup как softkeyboard. Я имею в виду, когда вы открываете всплывающее окно в Android, представления под всплывающим окном отключены (вы ничего не можете сделать, пока всплывающее окно не будет закрыто). Но когда затем открываются программные клавиши, представления всегда отображаются над программными клавишами.
Примечание: не нужно трюк, как view.setVisibility(View.GONE)
или же view.setVisibility(View.VISIBLE)
РЕДАКТИРОВАТЬ
Как просто сделать макет / просмотр вверх, когда всплывающее окно снизу вверх выглядит как программная клавиатура?
2 ответа
Для этого вам нужно создать собственное всплывающее представление, вам нужно создать другой xml-файл для своего представления и определить его высоту по ширине, сделать обтекание содержимым по высоте. И на ваши представления это не влияет, как и в других всплывающих окнах диалога, которые отключить что-нибудь в фоновом режиме.
Пример:- допустим, у вас есть XML для всплывающего окна с именем dialog_pop_up,
public void showPopUpDialog(Context context,ImageView imagebuttonPopUP) {
try {
View v = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.dialog_pop_up, null, false);
int[] location = new int[2];
//This is the button which triggers pop up
imagebuttonPopUP.getLocationOnScreen(location);
//Initialize the Point with x, and y positions
Point p = new Point();
p.x = location[0];
p.y = location[1];
int popupWidth = mActivity.getResources().getDimensionPixelOffset(R.dimen.home_screen_dialog_width);//Utility.dpToPx(mActivity,133);
int OFFSET_Y = imagebuttonPopUP.getHeight();
int OFFSET_X = imagebuttonPopUP.getWidth();
final PopupWindow window = new PopupWindow(v, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, true);
window.setWidth(popupWidth);
window.setOutsideTouchable(true);
window.setTouchable(true);
window.setFocusable(true);
window.setBackgroundDrawable(new BitmapDrawable());
//Initialize your view here.
TextView TextView1 = (TextView) v.findViewById(R.id.textview1);
TextView TextView2 = (TextView) v.findViewById(R.id.textview2);
LinearLayout Layout = (LinearLayout) v.findViewById(R.id.linearlayout2);
View dividerView = v.findViewById(R.id.view_divider);
//Click listeners of your views
TextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//your code here
//to dismiss window
window.dismiss();
}
});
TextView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//code
}
});
window.showAtLocation(imagebuttonPopUP, Gravity.NO_GRAVITY, p.x + OFFSET_X - popupWidth, p.y + OFFSET_Y);
} catch (Exception ex) {
Logger.e(TAG, ex.getMessage());
}
}
Да, вы можете создать Custom Dialog с двумя анимациями перевода снизу. Проверьте дроида, ответьте ребенку, он уже готов на вашем пути. Ответ