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.

InformationsquelleAutor SamStephens | 2011-02-07
Schreibe einen Kommentar