6

我遇到了 requestFocus 的问题。

首先,这是我的源代码:

<EditText
    android:id="@+id/etGLNum2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/btGLCalculate"
    android:ems="10"
    android:hint="@string/gl_num2_hint"
    android:inputType="number" />

<EditText
    android:id="@+id/etGLNum1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/etGLNum2"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/btGLCalculate"
    android:ems="10"
    android:hint="@string/gl_num1_hint"
    android:inputType="number">

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/tvGLResult"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/etGLNum2"
    android:gravity="center"
    android:text="@string/result"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<Button
    android:id="@+id/btGLCalculate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/tvGLResult"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/etGLNum1"
    android:text="@string/calculate" />

如您所见,焦点必须转到 etGLNum1,但始终转到 etGLNum2。

我已经尝试etGLNum1.requestFocus();从我的 java 文件中添加,但没有奏效。

我应该怎么办?

谢谢 :)

4

5 回答 5

2

添加 requestFocus您的Edittext.

<EditText
    android:id="@+id/etGLNum2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:layout_toLeftOf="@+id/btGLCalculate"
    android:ems="10"
    android:hint="@string/gl_num2_hint"
    android:inputType="number">
    <requestFocus />
</EditText>
于 2013-02-12T05:19:17.070 回答
1
 try this :-
 etGLNum2.setOnFocusChangeListener(new OnFocusChangeListener() {      
        @Override
        public void onFocusChange(View rv, boolean hasFocus) {

                       etGLNum2.clearFocus();
                   etGLNum1.requestFocus();



         }
      }
    });
于 2014-07-07T11:00:21.863 回答
0

只需添加 xml 所有编辑文本:

<EditText
    android:id="@+id/editText1"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:ems="10"
    android:hint="@string/gl_num2_hint"
    android:inputType="number" >
    <requestFocus />
</EditText>
于 2013-02-12T05:17:42.483 回答
0

在你onCreate()写的:

EditText etGLNum1 = (EditText)findViewById(R.id.etGLNum1);
etGLNum1.requestFocus();
etGLNum1.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) 
    {
        //enter code here
    }
});
于 2015-08-06T11:00:05.623 回答
0

根据我的经验,Android 有一个默认行为,即把焦点放在当前表面中找到的第一个可聚焦元素上(如果我们没有将任何默认元素设置为可聚焦)。
您可以在 onCreate()中使用etGLNum1.setFocusable(true)(在 setContentView() 调用之前)然后(在 setContentView() 调用之后).. 它应该可以工作..etGLNum1.requestFocus()

于 2018-02-26T13:38:05.277 回答