Daha basit bir çözüm var. Bu özellikleri üst düzeninizde ayarlayın:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
Ve şimdi, etkinlik başladığında bu ana düzen varsayılan olarak odaklanacaktır.
Ayrıca, odağı ana düzenine tekrar aşağıdaki gibi vererek, çalışma zamanında çocuk görünümlerinden (örneğin, çocuk düzenlemesini bitirdikten sonra) kaldırabiliriz:
findViewById(R.id.mainLayout).requestFocus();
İyi yorum dan Guillaume Perrot :
android:descendantFocusability="beforeDescendants"
varsayılan gibi görünüyor (tamsayı değeri 0'dır). Sadece ekleyerek çalışır
android:focusableInTouchMode="true"
.
Gerçekten, beforeDescendants
setin ViewGroup.initViewGroup()
yöntemde varsayılan olduğunu görebiliriz (Android 2.2.2). Ama 0'a eşit değil.ViewGroup.FOCUS_BEFORE_DESCENDANTS = 0x20000;
Guillaume'ye teşekkürler.
android:focusableInTouchMode="true"
?