2016-09-02 2 views
0

Мне сложно реализовать всплывающее окно, как softkeyboard. Я имею в виду, что когда вы открываете всплывающее окно в android, просмотры под всплывающим окном отключены (вы ничего не можете сделать, пока всплывающее окно не будет отключено). Но когда тогда открывается softkeyboard, представления всегда над программной клавиатурой.Android: возможно ли всплывающее всплывающее меню нравится softkeyboard?

Примечание: не нужно обманывать, как view.setVisibility(View.GONE) или view.setVisibility(View.VISIBLE)

EDIT

Как просто, как сделать макет/просмотр, когда всплывающий дисплей снизу вверх выглядеть softkeyboard?

+1

Если вы используете материальную тему и здание с новейшим api, то вы можете найти BottomSheet - https://material.google.com/components/bottom-sheets.html# и http: // android-developers .blogspot.in/2016/02/android-support-library-232.html –

+0

@ShadowDroid: сложно реализовать это, потому что мой макет сложный и не использующий эти материалы –

ответ

0

Для этого вам нужно создать настраиваемое представление, которое появляется, вам нужно создать другой 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()); 
    } 
} 
0

Да, вы можете создать пользовательский диалог с двумя перевести анимацию из нижней части. Проверьте, что парень-дроид отвечает, что он уже сделан по-вашему. Answer

+0

он просто отображает анимацию, выглядит как softkeyboard, а не основной вид выше всплывающего окна. –

+0

Выше информации для диалогового окна не для представления внутри макета, вы должны проверить это для внутренних просмотров http://stackoverflow.com/a/9253297/829034 –

Смежные вопросы