問題描述
我遇到了一個惱人的屏幕問題.屏幕由一堆 Spinner 組成,一個接一個,然后在 Spinner 下方,一個 EditText.
I've got an annoying issue with a screen. The screen consists of a bunch of Spinners one under the other, and then underneath the spinner, an EditText.
問題是當屏幕啟動時,EditText 有焦點,這意味著一些 Spinner 不在屏幕頂部.盡我所能,我無法通過在屏幕 XML 中使用 <requestFocus/>
或在代碼中使用 requestFocus()
使頂部 Spinner 開始聚焦.我試圖做 requestFocus skipping next EditText 建議的事情,如果我正確地遵循了建議,它也不行.
The problem is that when the screen starts, the EditText has focus, meaning that some Spinners are off the top of the screen. Try as I might, I cannot make the top Spinner start focused, either by using <requestFocus/>
in the screen XML, or by using requestFocus()
in code. I've attempted to do what requestFocus skipping next EditText suggests, and if I'm following the suggestion correctly, it doesn't work either.
要重現該問題,請在 Eclipse 中創建一個新的 Android 項目.main.xml 是
To reproduce the issue, create a new Android project in Eclipse. main.xml is
<?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>
活動代碼是
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();
}
}
請注意嘗試了多種樣式的 requestFocus.
Note multiple styles of requestFocus attempted.
這是一個平臺錯誤,還是我做錯了什么?
Is this a platform bug, or am I doing something wrong?
謝謝.
推薦答案
來自網上文檔:
如果視圖不可聚焦(isFocusable() 返回 false),或者如果它可聚焦但在設備處于觸摸模式時在觸摸模式下不可聚焦(isFocusableInTouchMode()),則視圖實際上不會獲得焦點.
A view will not actually take focus if it is not focusable (isFocusable() returns false), or if it is focusable and it is not focusable in touch mode (isFocusableInTouchMode()) while the device is in touch mode.
這篇關于無法請求Focus a Spinner的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!