[java] 레이아웃을 생성하고 표시 할 때 뷰에 초점을 맞추는 방법은 무엇입니까?

현재, Buttona TextViewEditText. 레이아웃이 표시되면 포커스가 자동으로에 놓 EditText이고 키보드가 Android 휴대폰에 표시되도록 트리거합니다. 내가 원하는 것이 아닙니다. TextView레이아웃이 표시 될 때 포커스를 설정 하거나 아무것도 설정 하지 않을 수있는 방법이 있습니까?



답변

포커스 설정 : 프레임 워크는 사용자 입력에 대한 응답으로 이동 포커스를 처리합니다. 특정보기에 초점을 맞추려면 requestFocus ()를 호출하십시오.


답변

이것은 작동합니다 :

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


답변

다음을 추가해야합니다.

android:focusableInTouchMode="true"


답변

세트

 android:focusable="true"

당신의 <EditText/>


답변

포커스를 설정하려면 핸들러를 사용하여 requestFocus ()를 지연합니다.

private Handler mHandler= new Handler();

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     LinearLayout mainVw = (LinearLayout) findViewById(R.id.main_layout);

     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
           LinearLayout.LayoutParams.FILL_PARENT,
           LinearLayout.LayoutParams.WRAP_CONTENT);

     EditText edit = new EditText(this);
     edit.setLayoutParams(params);
     mainVw.addView(edit);

     TextView titleTv = new TextView(this);
     titleTv.setText("test");
     titleTv.setLayoutParams(params);
     mainVw.addView(titleTv);

     mHandler.post(
       new Runnable()
       {
          public void run()
          {
            titleTv.requestFocus();
          }
       }
     );
   }
}


답변

키보드를 숨기면됩니다. 이 같은:

InputMethodManager inputManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);


답변

시험

comp.requestFocusInWindow();