Ответ 1
Это сообщение имеет решение проблемы.
Ответ заключался в том, чтобы добавить android:focusableInTouchMode="true"
в LinearLayout
, содержащий EditText
. Теперь он не вызывает мягкую клавиатуру автоматически.
У меня есть Fragment
(версия совместимости) с EditText
в его макете. Я использую ViewFlipper
для переключения между фрагментами. Когда я дойду до этого Fragment
, мягкая клавиатура откроется автоматически. Это не то, что я хочу. Вот что я пытался остановить или скрыть.
Пробовал:
android:descendantFocusability="beforeDescendants"
на главном экране фрагмента
Пробовал:
android:windowSoftInputMode="stateHidden"
и
android:windowSoftInputMode="stateAlwaysHidden"
в манифесте для активности
Пробовал:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mViewPager.getChildAt(position).getWindowToken(), 0);
в OnPageChangeListener моего ViewPager
Пробовал:
InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(voucherView.findViewById(R.id.redeem_mobile_number).getWindowToken(), 0);
в onCreateView в моем фрагменте
Пробовал:
InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getView().findViewById(R.id.redeem_mobile_number).getWindowToken(), 0);
в onStart в моем фрагменте
Пробовал:
voucherView.findViewById(R.id.redeem_mobile_number).clearFocus();
в onCreateView в моем фрагменте
Мне кажется, что onPageChangeListener - это место, чтобы сделать это, потому что другие вызовы происходят до того, как открыта мягкая клавиатура. Любая помощь будет отличной.
Это сообщение имеет решение проблемы.
Ответ заключался в том, чтобы добавить android:focusableInTouchMode="true"
в LinearLayout
, содержащий EditText
. Теперь он не вызывает мягкую клавиатуру автоматически.
<LinearLayout
android:id="@+id/layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
>
<EditText
android:id="@+id/retailer_search_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
Просто следуй за ним. И EditText должен находиться внутри LinearLayout.
Вы пробовали это?
<activity
android:name=".YourActivityName"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="stateHidden" />
EDIT:
попробуйте это (теперь я плохой, но попробую это):)
Thread splashTread = new Thread() {
@Override
public void run() {
try {
sleep(1);
} catch (InterruptedException e) {
// do nothing
} finally {
runOnUiThread(new Runnable() {
public void run() {
InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(youreditText.getWindowToken(), 0);
}
});
}
}
};
splashTread.start();
Добавьте это в свой тег активности в AndroidManifest.xml
keyboardHidden: не позволит автоматически открывать мягкую клавиатуру ввода.
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize|stateHidden"
У меня была мягкая клавиатура, вызывающая тревогу всплывающее окно и нажатие всех просмотров, когда я нажимаю на редактируемый текст в виде фрагмента (мое приложение представляет собой приложение вложенных фрагментов - фрагмент в фрагменте)
Я попробовал дюжину решений здесь и в Интернете, но ничего не помогло, кроме этого, который редактирует сам EditText
в XML (а не в представлении выше/не в манифесте/не переписывании при создании действий/ничем другом)
добавив строку android:focusableInTouchMode="false"
в ваш XML-текст EditText.
Я заимствовал решение от ACengiz в этой теме
как заблокировать виртуальную клавиатуру при нажатии на edittext в андроиде?
Только 2 человека проголосовали за него? хотя для меня это была заставка после частых головных болей.
Это сработало для меня.
edittext.setInputType(InputType.TYPE_NULL);
if (android.os.Build.VERSION.SDK_INT >= 11)
{
edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);
edittext.setTextIsSelectable(true);
}
Попробуйте это
exitText.setFocusableInTouchMode(true);