Tetapkan fokus awal di aplikasi Android


86

Dalam aplikasi Android saya secara otomatis memfokuskan yang pertama Buttonsaya miliki di tata letak saya, memberikan garis oranye. Bagaimana cara menyetel fokus awal lebih disukai dalam XML, dan dapatkah ini disetel ke tidak ada?

Jawaban:


160

Anda bisa menggunakan requestFocustag:

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

Saya merasa aneh meskipun itu memfokuskan otomatis salah satu tombol Anda, saya belum mengamati perilaku itu dalam pandangan saya.


Ya, ini telah terjadi dengan dua aplikasi saya sekarang. Saya kira saya bisa requestFocus ke elemen yang tidak berubah seperti TextView atau apakah ini tidak diizinkan?
stealthcopter

1
@stealthcopter: dapatkah Anda memberi tahu saya versi Android mana yang Anda gunakan. Saya menggunakan 2.1 & 2.2, tetapi requestFocus tidak berfungsi.
anticafe

Saya telah menggunakannya di semua versi, tetapi masalah yang saya alami sepertinya hilang dengan sendirinya jadi saya belum banyak menyelidiki.
stealthcopter

19
Saya sudah mencoba pendekatan XML, saya sudah mencoba pendekatan programatik. Namun EditText tetap fokus. SANGAT MENYEBALKAN !
Seseorang Di Suatu Tempat


65

@Someone Somewhere, saya mencoba semua hal di atas tetapi tidak berhasil. Perbaikan yang saya temukan adalah dari http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android . Pada dasarnya, Anda perlu membuat tata letak yang tidak terlihat tepat di atas Tombol yang bermasalah:

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

Saya bisa mendapatkan fokus pada AlertDialog dan mengaktifkan focusableintouchmode membantu saya melakukannya dengan benar. Pada dasarnya, begini caranya: alert.show (); alert.getButton (AlertDialog.BUTTON_POSITIVE) .setFocusableInTouchMode (true); alert.getButton (AlertDialog.BUTTON_NEGATIVE) .requestFocus ();
Sagar Hatekar

2
Terima kasih! Ini adalah satu - satunya solusi yang berhasil dalam kasus saya. Meskipun saya menggunakannya sedikit berbeda; Saya meletakkan hal-hal fokus di dalam RelativeLayoutfile EditText.
kaka

1
Dengan Android P, perubahan berikut akan diterapkan pada platform: "Tampilan dengan 0 area (baik lebarnya atau tingginya 0) tidak lagi dapat difokuskan. Selain itu, aktivitas tidak lagi secara implisit menetapkan fokus awal dalam mode sentuh. Sebaliknya, naik kepada Anda untuk meminta fokus awal secara eksplisit, jika diinginkan. "
AustrianDude

28

Setel keduanya :focusabledan :focusableInTouchModeke true and call requestFocus. Itu berhasil.


Ya ini adalah solusi yang tepat untuk memperbaikinya. Terima kasih Anders
gokhansari

23

Saya menemukan ini bekerja paling baik untuk saya.

Di AndroidManifest.xml <activity> elementtambahkanandroid:windowSoftInputMode="stateHidden"

Ini selalu menyembunyikan keyboard saat memasuki aktivitas.


Mudah dan bersih!
SHADOW.NET

hebat ... ini sangat mengesankan!
gumuruh

11

Saya hanya menambahkan baris kode ini ke onCreate():

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

Masalah terpecahkan.


7

Gunakan kode di bawah ini,

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

itu seharusnya berhasil.


3

@Someone Somewhere I menggunakan ini untuk fokus yang jelas:

editText.clearFocus();

dan itu membantu


1
android:focusedByDefault="true"

Atribut focusedByDefaulthanya digunakan di API level 26 dan lebih tinggi (min saat ini adalah 21).
AlexS
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.