একটি সহজ সমাধান বিদ্যমান। আপনার প্যারেন্ট লেআউটে এই বৈশিষ্ট্যগুলি সেট করুন:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
এবং এখন, যখন ক্রিয়াকলাপ শুরু হবে তখন এই মূল বিন্যাসটি ডিফল্টরূপে ফোকাস পাবে।
এছাড়াও, আমরা রানটাইমের সময়ে শিশু দর্শন থেকে ফোকাস সরিয়ে ফেলতে পারি (উদাহরণস্বরূপ, শিশু সম্পাদনা শেষ করে) আবার মূল বিন্যাসে ফোকাস দিয়ে, এর মতো:
findViewById(R.id.mainLayout).requestFocus();
গিলিয়াম পেরের কাছ থেকে ভাল মন্তব্য :
android:descendantFocusability="beforeDescendants"
ডিফল্ট বলে মনে হচ্ছে (পূর্ণসংখ্যা মান 0)। এটি কেবল যুক্ত করে কাজ করে
android:focusableInTouchMode="true"
।
সত্যই, আমরা দেখতে পাচ্ছি যে পদ্ধতিটি beforeDescendants
ডিফল্ট হিসাবে সেট ViewGroup.initViewGroup()
(অ্যান্ড্রয়েড ২.২.২)। তবে 0 এর সমান নয়।ViewGroup.FOCUS_BEFORE_DESCENDANTS = 0x20000;
গিলিয়ামকে ধন্যবাদ
android:focusableInTouchMode="true"
!