Nicht verwalten können, um requestFocus ein Spinner
Ich habe ein nerviges Problem mit einem Bildschirm. Der Bildschirm besteht aus einem Haufen Spinner unter den anderen, und dann unter den spinner, ein EditText.
Das problem ist, dass, wenn der Bildschirm beginnt, die EditText hat Fokus, was bedeutet, dass einige Spinner werden aus dem oberen Rand des Bildschirms. Versuchen wie ich könnte, ich kann nicht den top-Spinner start konzentriert, entweder durch die Verwendung <requestFocus/>
im Bildschirm XML oder durch die Verwendung requestFocus()
im code. Ich habe versucht zu tun, was requestFocus skipping nächsten EditText schlägt, und wenn ich den Vorschlag richtig, funktioniert es ebenfalls nicht.
Ist das Problem zu reproduzieren, erstellen Sie ein neues Android-Projekt in Eclipse. main.xml ist
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Spinner
android:id="@+id/spinner"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<requestFocus />
</Spinner>
<EditText
android:id="@+id/edittext"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Der Tätigkeit code ist
package nz.co.kb.testspinner;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class TestSpinner extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
View view = getLayoutInflater().inflate(R.layout.main, null);
final View spinner = view.findViewById(R.id.spinner);
view.post(new Runnable() {
public void run() {
spinner.requestFocus();
}
});
setContentView(view);
spinner.requestFocus();
}
}
Hinweis mehrere Arten von requestFocus versucht.
Ist dies eine Plattform, bug, oder mache ich etwas falsch?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom online -Dokumentation:
Hatte ich ein ähnliches problem habe ich gelöst, indem zwei Dinge:
1) ich habe die Spinner-Objekt auf der Oberseite (Innerhalb der onCreate-Methode) nur um sicher zu gehen, dass mein code wird zuerst ausgeführt.
2) ich habe die folgenden:
Lassen Sie mich wissen, ob das hilft oder Sie weitere Hilfe benötigen.
s1..requestFocus();
In meinem Fall geklappt.