2013-02-12 27 views
6

Tôi gặp sự cố với requestFocus.EditText requestFocus()?

Thứ nhất, đây là mã nguồn của tôi:

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

Như bạn thấy, trọng tâm cần phải đi đến etGLNum1, nhưng nó luôn luôn đi vào etGLNum2.

Tôi đã thử thêm etGLNum1.requestFocus(); từ tệp java của mình nhưng nó không hoạt động.

Tôi nên làm gì?

Cảm ơn :)

Trả lời

0

chỉ cần thêm xml tất cả editexts:

<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> 
+0

vẫn không hoạt động :( –

2

Thêm requestFocus trong Edittext của bạn.

<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> 
+2

vẫn không hoạt động :( –

1
try this :- 
etGLNum2.setOnFocusChangeListener(new OnFocusChangeListener() {  
     @Override 
     public void onFocusChange(View rv, boolean hasFocus) { 

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



     } 
     } 
    }); 
0

Trong onCreate() ghi của bạn:

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

    @Override 
    public void onFocusChange(View v, boolean hasFocus) 
    { 
     //enter code here 
    } 
}); 
0

Với những gì tôi đã trải qua được, Android có aa hành vi mặc định của cho tập trung vào các yếu tố có thể đặt tiêu đầu tiên được tìm thấy ở bề mặt hiện tại (nếu chúng ta chưa đặt bất kỳ phần tử mặc định nào thành tiêu điểm).
Bạn có thể sử dụng etGLNum1.setFocusable(true) (trước setContentView() gọi) sau đó etGLNum1.requestFocus() (sau setContentView() gọi) từ bạn onCreate() ..
Nó sẽ làm việc ..