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 с двумя анимациями перевода снизу. Проверьте дроида, ответьте ребенку, он уже готов на вашем пути. Ответ

Другие вопросы по тегам