requestFocus跳过下一个EditText

时间:2010-11-18 05:06:18

标签: android focus android-edittext

我在控制聚焦方面遇到了一些问题。我的界面定义如下:

来源(RadioGroup /可选) 目的地(EditText) 数量(EditText) 转移(按钮)

我正在将“源”的可见性更改为我的代码。当我没有显示它的时候,焦点会自动转到“数量”,我希望它是“目的地”。我不知道我错过了什么。我怀疑它可能是一个Android bug,我不知道。有人知道如何解决这个问题吗?

由于

<?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">

    <RadioGroup android:id="@+id/source"
     android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:visibility="gone">
   <RadioButton android:id="@+id/default"
    android:checked="false"
    android:text="@string/default"/>
 </RadioGroup>

 <TableLayout
  android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:stretchColumns="1">
     <TableRow>
   <TextView 
    android:text="@string/destination"
    android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textSize="16sp"
       android:textColor="#ffffff"
       android:paddingRight="10sp"
       android:layout_weight="1"/>

      <EditText android:id="@+id/destination"
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"
       android:layout_weight="1"
       android:singleLine="true"><requestFocus/></EditText>
  </TableRow>

  <TableRow>
   <TextView 
    android:text="@string/quantity"
    android:layout_width="wrap_content" 
       android:layout_height="wrap_content"
       android:textSize="16sp"
       android:textColor="#ffffff"
       android:paddingRight="10sp"
       android:layout_weight="1"/>

      <EditText android:id="@+id/quantity"
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"
       android:layout_weight="1"
       android:singleLine="true"/>
  </TableRow>
 </TableLayout>

 <Button android:id="@+id/transfer"
  android:layout_width="fill_parent" 
     android:layout_height="wrap_content"
     android:text="@string/transfer"/>
</LinearLayout>

4 个答案:

答案 0 :(得分:8)

这似乎是一个已知问题。以下关于Android项目的Google代码的帖子描述了同样的问题。

Issue 2705: Setting requestFocus on EditText prevents soft keyboard from opening

您可以尝试在代码中而不是在布局中设置焦点。

答案 1 :(得分:2)

来自在线documentation

  

如果视图不可聚焦(isFocusable()返回false),或者如果它是可聚焦的,并且在设备处于触摸模式时它在触摸模式(isFocusableInTouchMode())中无法聚焦,则视图实际上不会获得焦点。 / p>

答案 2 :(得分:2)

我遇到同样的问题, 试试这个适用于我的代码。

             editText.post(new Runnable() {
                 public void run() {
                       editText.requestFocus(); 
                                   } 
                                           }); 

答案 3 :(得分:1)

使用EditText的{​​{1}}方法。 :)