Показывать клавиатуру автоматически
Пожалуйста, объясните мне проблему о 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 будет сфокусирован и появится клавиатура, но я ошибаюсь.
Как я должен управлять тем, какой компонент получит фокус и клавиатура будет автоматически появляться.
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
Я рекомендую следующую ссылку, я следовал шагам, которые указаны ниже ссылка, отлично работает, это довольно хороший ответ, сделанный в очень простых шагах. кредит идет к ответившему человеку. надеюсь, что это поможет человеку, который испортит всплывающее окно клавиатуры на диалоговой активности.
Для меня, добавив эту строку 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