или же

жный дубликат:
Закрыть / скрыть программную клавиатуру Android

Первым делом первым я уже виделэто нить. Я попробовал принятые методы, данные там .. Но у меня ничего не получалось ..

У меня есть два экрана в моем приложении.

Первый из них имеет 2 EditText's - один для имени пользователя и один для пароляВторой имеет один ListView, а EditText - для фильтрации listView

На моем первом экране я хочу, чтобы имя пользователя EditText было сосредоточено на запуске, и клавиатура должна быть видна..Это моя реализация (упрощается путем удаления ненужных / не связанных кодов) ..

app_login.xml
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:paddingLeft="20dip"  
    android:paddingRight="20dip">

    <EditText android:id="@+id/username" android:singleLine="true" 
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content" android:hint="Username"  
        android:imeOptions="actionDone" android:inputType="text"
        android:maxLines="1"/>

    <EditText android:id="@+id/password" android:password="true" 
        android:singleLine="true"  
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:hint="Password" />

</LinearLayout>
AppLogin.java
class AppLogin extends Activity{
    private EditText mUserNameEdit = null;
    private EditText mPasswordEdit = null;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.app_login);

        mUserNameEdit  =    (EditText) findViewById(R.id.username);
        mPasswordEdit  =    (EditText) findViewById(R.id.password);

        /* code to show keyboard on startup.this code is not working.*/
        InputMethodManager imm =  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(mUserNameEdit, InputMethodManager.SHOW_IMPLICIT);

    }//End of onCreate()
}

Что ж,клавиатура не отображается при запуске, И мой дизайн сильно требует клавиатуры там ..

Теперь навторая страница..Я уже сказал, у меня есть listView и EditText там ..Я хочу, чтобы моя клавиатура была скрыта при запуске, чтобы она появлялась только при касании пользователем editText...Ты можешь в это поверить? все, что я пыталсямягкая клавиатура показывает, когда я загружаю активность..Я не могу это скрыть ..

app_list_view.xml
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical" >
    <EditText android:id="@+id/filter_edittext"       
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:hint="Search" android:inputType="text" android:maxLines="1"/>
    <ListView android:id="@id/android:list" android:layout_height="fill_parent"
        android:layout_weight="1.0" android:layout_width="fill_parent" 
        android:focusable="true" android:descendantFocusability="beforeDescendants"/>
</LinearLayout>     
AppList.java
public class MyListActivity extends ListActivity{
   private EditText mfilterEditText;

    @Override
   public void onCreate(Bundle savedInstanceState) {        
      super.onCreate(savedInstanceState);
      setContentView(R.layout.app_list_view);

      mFilterEditText  =  (EditText) findViewById(R.id.filter_edittext);
      InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(mFilterEditText.getWindowToken(), 0);
   }
}

Для упрощения

На странице входа (первая страница) я хочу, чтобы моя клавиатура была видна при запуске ..На SecondPage я хочу, чтобы клавиатура была спрятана первой, только чтобы она появлялась, когда пользователь касается editText

И моя проблема в том, что в обоих случаях я получаю абсолютно противоположное... надеюсь, кто-то сталкивался с этой проблемой раньше .. Кстати, я тестирую на симуляторе и телефоне HTC Desire ..

ЗАКЛЮЧИТЕЛЬНЫЙ ИТОГ

Ну, я получил это с помощью всех друзей здесь.

1. Показать клавиатуру при запуске

Два ответа сработали для меня.Один предоставлен @CapDroid, который должен использовать обработчик и публиковать его с задержкой.

mUserNameEdit.postDelayed(new Runnable() {
  @Override
  public void run() {
    // TODO Auto-generated method stub
    InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    keyboard.showSoftInput(mUserNameEdit, 0);
  }
},50);

Вторые ответы дает @Dyarish, на самом деле он связался с другой SO-темой, которую я раньше не видел. Но забавно то, что это решение дано в теме, на которую я ссылался при запуске. И я не пробовал, потому что у него было ноль голосов в ветке, где все остальные посты имеют много голосов .. Высота глупости ..

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

Для меня второе решение выглядело опрятно, поэтому я решил придерживаться его. Но первое, безусловно, работает. Кроме того, ответ @ Dyarish содержит хитрый способ использования ScrollView под EditText, чтобы придать EditText фокус ... Но я не пробовал, но он должен работать. Не аккуратно, хотя ..

2. Спрятать клавиатуру при запуске активности

У меня работал только один ответ, предоставленный @Dyarish. И решение состоит в том, чтобы использовать настройки focusableInTouchMode в xml для макета, содержащего тексты редактирования. Это сделал трюк

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical" android:focusableInTouchMode="true">
    <EditText android:id="@+id/filter_edittext"       
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:hint="Search" android:inputType="text" android:maxLines="1"/>
    <ListView android:id="@id/android:list" android:layout_height="fill_parent"
        android:layout_weight="1.0" android:layout_width="fill_parent" 
        android:focusable="true" android:descendantFocusability="beforeDescendants"/>
</LinearLayout> 

В любом случае я в конечном итоге использую ответ Дьяриша в обоих случаях. Так что я присуждаю ему награду .. Спасибо всем другим друзьям, которые пытались мне помочь ..

Ответы на вопрос(4)

Ваш ответ на вопрос