Android 애플리케이션에서 초기 포커스 설정


86

내 Android 애플리케이션에서는 Button레이아웃에 있는 첫 번째 항목에 자동으로 초점을 맞추고 주황색 윤곽선을 표시합니다. 가급적 XML에서 초기 포커스를 설정하는 방법은 무엇이며 아무것도 설정하지 않을 수 있습니까?

답변:


160

requestFocus태그를 사용할 수 있습니다 .

<Button ...>
  <requestFocus />
</Button>

버튼 중 하나에 자동으로 초점을 맞추는 것이 이상하지만 내 뷰에서 해당 동작을 관찰하지 못했습니다.


예, 지금 두 개의 응용 프로그램에서 발생했습니다. TextView처럼 변경되지 않는 요소에 requestFocus를 요청할 수 있습니까? 아니면 허용되지 않습니까?
stealthcopter 2010

1
@stealthcopter : 사용중인 Android 버전을 알려주세요. 2.1 및 2.2를 사용하고 있지만 requestFocus가 작동하지 않습니다.
anticafe 2011 년

글쎄, 나는 모든 버전에서 그것을 사용하고 있지만 내가 겪었던 문제는 저절로 사라지는 것처럼 보였기 때문에 많이 조사하지 않았습니다.
stealthcopter 2011 년

19
저는 XML 접근 방식을 시도했고 프로그래밍 방식을 시도했습니다. 그러나 EditText는 초점을 유지합니다. 매우 괴롭습니다!
누군가 어딘가에


65

@Someone Somewhere, 위의 모든 것을 아무 소용이 없었습니다. 내가 찾은 수정 사항은 http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android 입니다. 기본적으로 문제가있는 버튼 바로 위에 보이지 않는 레이아웃을 만들어야합니다.

<LinearLayout android:focusable="true"
              android:focusableInTouchMode="true" 
              android:layout_width="0px"
              android:layout_height="0px" >
    <requestFocus />
</LinearLayout>

AlertDialog에 초점을 맞출 수 있었고 focusableintouchmode를 활성화하면 제대로 이해할 수있었습니다. 기본적으로 방법은 다음과 같습니다. alert.show (); alert.getButton (AlertDialog.BUTTON_POSITIVE) .setFocusableInTouchMode (true); alert.getButton (AlertDialog.BUTTON_NEGATIVE) .requestFocus ();
Sagar Hatekar

2
감사합니다! 이것은 제 경우에 효과 가 있었던 유일한 해결책 이었습니다 . 나는 그것을 약간 다르게 사용했지만; 나는이에 초점 물건을 넣어 RelativeLayout을 포함 EditText.
kaka

1
Android P에서는 다음과 같은 변경 사항이 플랫폼에 적용됩니다. "영역이 0 인 뷰 (너비 또는 높이가 0 임)는 더 이상 초점을 맞출 수 없습니다. 또한 활동은 더 이상 터치 모드에서 초기 초점을 암시 적으로 할당하지 않습니다. 대신 작동 상태입니다. 원하는 경우 초기 초점을 명시 적으로 요청합니다. "
AustrianDude

28

:focusable및 둘 다 :focusableInTouchModetrue로 설정하고을 호출하십시오 requestFocus. 트릭입니다.


예, 이것이 문제를 해결하는 진정한 해결책입니다. 감사 앤더스
gokhansari

23

나는 이것이 나를 위해 가장 잘 작동한다는 것을 알았습니다.

AndroidManifest.xml에서 <activity> element추가android:windowSoftInputMode="stateHidden"

이것은 활동에 들어갈 때 항상 키보드를 숨 깁니다.


쉽고 깨끗합니다!
SHADOW.NET 2018

대단합니다 ... 이것은 매우 인상적입니다!
무루

11

이 코드 줄을 다음에 추가합니다 onCreate().

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

문제 해결됨.


Android 2.3.3에서 작동합니다.
Gaurav Agarwal 2013

7

아래 코드를 사용하십시오.

TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody);
tableRow.requestFocus();

작동합니다.


3

@Someone Somewhere 나는 이것을 사용하여 초점을 명확하게했습니다.

editText.clearFocus();

그리고 그것은 도움이됩니다


1
android:focusedByDefault="true"

속성 focusedByDefault은 API 레벨 26 이상에서만 사용됩니다 (현재 최소값은 21 임).
AlexS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.