0

Ниже мой код Я просмотрел переполнение стека и написал код для моего всплывающего диалогового окна, в котором есть 2 EditText, мне нужно всплывать на моем SoftKeypad предупреждение, то, что он делает, появляется на клавиатуре, когда я нажимаю edittext, но клавиатура находится за моим предупреждающим ящиком.Keyboard Pop up Code работает, но клавиатура стоит за полем оповещения - Android

Итак, я попытался использовать всплывающее окно с принудительной клавиатурой чуть ниже alert.show(), которое он делает, но в фоновом режиме и оповещения идет над ним.

Пожалуйста, получая раствор

Код:

for (int k = 0; k < mCompetitorMainList.getChildCount(); k++) 
        { 
         LinearLayout layout = (LinearLayout) mCompetitorMainList.getChildAt(k); 
         Button btn = (Button) layout.getChildAt(0); 
         String tag = (String) btn.getTag(); 
         LinearLayout dataDetail = (LinearLayout) layout.getChildAt(2); 

         if (tag.equalsIgnoreCase("yes") && btn.getText().toString().equals("OTHERS")) 
         { 

          final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getContext()); 

          LayoutInflater inflater = getActivity().getLayoutInflater(); 
          final View dialogView = inflater.inflate(R.layout.alert_other_competitor_item_detail, null); 
          ImageView addImg =(ImageView)dialogView.findViewById(R.id.addCompetitorImg); 
          ImageView removeImg = (ImageView)dialogView.findViewById(R.id.removeCompetitorImg); 
          final LinearLayout competitorOtherLayout = (LinearLayout)dialogView.findViewById(R.id.competitorLayout); 

          addImg.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View v) { 
            LayoutInflater inflaterLayout = getActivity().getLayoutInflater(); 
            View dialogViewLayout = inflaterLayout.inflate(R.layout.add_other_item_layout, null); 
            EditText otherCompDesc = (EditText) dialogViewLayout.findViewById(R.id.otherCompetitorDescription); 
            EditText otherCompQty = (EditText) dialogViewLayout.findViewById(R.id.otherCompetitorQty); 

            otherCompDesc.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
             @Override 
             public void onFocusChange(View v, boolean hasFocus) { 
              if (hasFocus) { 
               InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
               imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
              } 
             } 
            }); 

            otherCompQty.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
             @Override 
             public void onFocusChange(View v, boolean hasFocus) { 
              if (hasFocus) { 
               InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
               imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
              } 
             } 
            }); 

            competitorOtherLayout.addView(dialogViewLayout); 

           } 
          }); 

          removeImg.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View v) { 

            if(competitorOtherLayout.getChildCount()!=0) 
            { 
             competitorOtherLayout.removeViewAt(competitorOtherLayout.getChildCount()-1); 
            } 
            else 
            { 
             Toast.makeText(getActivity(),"No Other Competitor Present ",Toast.LENGTH_LONG).show(); 
            } 

           } 
          }); 

          dialogBuilder.setView(dialogView); 

          alertDialogOther = dialogBuilder.create(); 
          alertDialogOther.getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); 
          alertDialogOther.show(); 

          //alertDialogOther.setCancelable(false); 


          Toast.makeText(getActivity(), "Others Clicked", Toast.LENGTH_SHORT).show(); 
          btn.setTag("no"); 
         } 
         else if (tag.equalsIgnoreCase("yes")) 
         { 
          dataDetail.setVisibility(View.VISIBLE); 
          btn.setTag("no"); 
         } 
         else 
         { 
          dataDetail.setVisibility(View.GONE); 
         } 
        } 

SCREENSHOT:

SCREENSHOT SHOWING KEYPAD BACK OF ALERT

ответ

1
private void openKeyboard(){ 
     InputMethodManager inputMethodManager = 
       (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
} 

использовать это вместо того, чтобы ..

+0

я получаю клавиатуры, но его за поле предупреждения, как мне принести, если на фронте, я использую фрагмент, – Yatin

+0

вы попробовали это: alertDialogOther.getWindow(). setFlags (WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); –

+0

Нет. не работал – Yatin