Показывать клавиатуру автоматически



Пожалуйста, объясните мне проблему о soft keyboard.
Например, у меня есть EditText на моей активности или dialogfragment или fragmentactivity, что угодно.
вот ОНО:



<EditText
android:id="@+id/edPswrd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" >

<requestFocus />
</EditText>


Когда он показывает в первый раз, я не вижу мягкой клавиатуры и должен нажать editText, чтобы он получил фокус, и клавиатура появляется. Другие виды деятельности отличаются тем, что при появлении на экране клавиатуры загружаются без какой-либо помощи.
Я думал, что







Означает, что EditText будет сфокусирован и появится клавиатура, но я ошибаюсь.



Как я должен управлять тем, какой компонент получит фокус и клавиатура будет автоматически появляться.

582   9  

9 ответов:

Я думаю, что это ошибка или функция, которая пытается представить вам всю активность, не скрывая ее сначала с помощью мягкой клавиатуры. Я однажды искал информацию об этом, но, к сожалению, ничего не нашел из действительно надежного источника.

В любом случае, чтобы показать софт-клавиатуру, вы можете сделать следующее:

EditText editText = (EditText)findViewById(R.id.edit_text_id);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

Я также видел этот код, который должен заставить программную клавиатуру стать видимой сразу после запуска активности, но никогда не пробовал его:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

И если вы хотите скрыть софт-клавиатуру вы можете сделать это:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
Надеюсь, это поможет.

Редактировать:

Для DialogFragment это должно работать: в методе onCreateView() Сделайте это:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_id, container);
    EditText editText = (EditText)view.findViewById(R.id.edit_text_id);

    // show soft keyboard
    editText.requestFocus();
    getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

    return view;
}

Откройте файл манифеста Android.

Найдите тег activity следующим образом

<activity  
        android:name="com.example.framework.MainActivity"
        android:label="@string/app_name" 
        android:windowSoftInputMode="stateVisible"       //Add this line    
         >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Добавьте строку android: windowSoftInputMode= "stateVisible", как показано выше

Я знаю, что на это уже был дан ответ, но я нашел способ сделать принятый ответ в onCreateDialog вместо просто в onCreateView. Когда вы закончите со строителем, перед возвращением сделайте следующее:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  
// blah blah blah do builder stuff here like setTitle, setView, etc

Dialog d = builder.create();

Вот важная часть:

d.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
return d;

Добавить в onCreate или onStart ();

myView.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

Попробуйте это

@Override
public void onResume() {
   super.onResume();
   final View v = getDialog().findViewById(R.id.edit_text_id);
   v.post(new Runnable() {
      @Override
      public void run() {
        v.requestFocus();
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
      }
   });
 }

Это то, что сработало для меня -

Создайте свой собственный класс EditText и переопределите следующий метод -

public class FocussableEditText extends EditText {

    public FocussableEditText(Context context) {
        super(context);
    }

    public FocussableEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FocussableEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        if (hasWindowFocus) {
            InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
        }
    }
}

Http://debuggingisfun.blogspot.in/2014/08/android-show-soft-keyboard.html

Я рекомендую следующую ссылку, я следовал шагам, которые указаны ниже ссылка, отлично работает, это довольно хороший ответ, сделанный в очень простых шагах. кредит идет к ответившему человеку. надеюсь, что это поможет человеку, который испортит всплывающее окно клавиатуры на диалоговой активности.

DialogFragment и заставить показать клавиатуру

Для меня, добавив эту строку android: windowSoftInputMode= "stateVisible" в вашем манифесте, как это

**<activity
            android:name=".mmmmm.zzzzzzz.yyyyyy.xxxxxx"
            android:windowSoftInputMode="stateVisible"
            android:label="@string/title_activity_print_recharge"></activity>**

Вот как я ее решил

Это то, что я сделал, и это хорошо работает...

Вы можете использовать

Утилиты.showSoftKeyboard(...)

В любом месте вашего кода

public final class Utilities {

  // Shows the soft keyboard. V on which view (typically EditText) to focus the keyboard input
  public static void showSoftKeyboard(Activity activity, EditText editText) 
  {
      InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
  }
}

/**
 * Called when user clicks/touches the search button
 * @param v The clicked/touched view (EditText)
 */
protected void onSearchButtonClick(View v)
{
    EditText seekTopic = (EditText) findViewById(R.id.SeekTopicBox);
    setActivityContent(seekTopic.getText().toString());
}

The

OnSearchButtonClick ()

Метод относится к деятельности, которая содержит EditView, который я хочу редактировать, и поэтому мне нужна мягкая клавиатура..

HTH

Comments

    Ничего не найдено.