2010-08-16 73 views
17

我的活動中有一個EditText和一個TextView。我想在活動啓動時將焦點設置在TextView上。我用下面的代碼:如何在活動啓動時在TextView上設置焦點?

TextView myTextView = (TextView) findViewById(R.id.my_text_vew); 
    myTextView.setFocusable(true); 
    myTextView.setOnClickListener(this); 
    myTextView.requestFocus(); 

但是代碼不起作用。當活動開始時,EditText總是獲得焦點。

任何人都可以幫忙嗎?

謝謝。

回答

13

這是您使用觸摸屏開始活動時的預期。當處於「觸摸模式」時,只有幾個視圖(EditText和ListView)可以獲得焦點。如果您使用軌跡球啓動應用程序,您將看到TextView的焦點。你所看到的是正確和預期的結果。

+1

如何做相反的事情。例如,我有一個數字編輯區作爲第一個UI對象,並且總是接收焦點並彈出鍵盤。我不想讓鍵盤彈出。 – Pentium10 2010-08-16 20:12:59

+0

所以,我需要將TextView設置爲可在觸摸模式下進行對焦? – user256239 2010-08-16 21:30:41

11

我現在碰到你的問題。也許在2年後你已經找到了解決方案。但我在這裏爲其他將來會遇到的人寫下來。您唯一需要做的就是去AndroidManifest.xml,找到您想要這種行爲的Activity並添加這個android:windowSoftInputMode="stateHidden"。因此,在Activity開始時,不會顯示任何鍵盤,直到您觸摸EditText對象。

8

如果有人仍然不知道,你可以使用你的佈局XML以下,使在觸摸模式下一個TextView可聚焦:

android:focusableInTouchMode="true" 
2

添加TextView的財產佈局

android:focusable="false" 

這是工作爲了我。

0

您可以將焦點設置爲任何小部件或來自活動xml的TextView。只需在TextView結束之前添加requestFocus即可。

<AutoCompleteTextView 
     android:id="@+id/autoCompleteTextView2" 
     android:layout_width="470dp" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="90dp" 
     android:layout_toEndOf="@+id/textView2" 
     android:ems="10" 
     android:textColor="#455A64" 
     android:textColorHint="#455A64" 
     android:textSize="27sp"> 

     <requestFocus /> 
    </AutoCompleteTextView> 
4

爲了請求焦點的TextView需要設置focusable="true"focusableInTouchMode="true"如下:

<TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Heading" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:focusable="true" 
      android:focusableInTouchMode="true"> 
       <requestFocus /> 
    </TextView> 
2

使用此:

EditText mEditText = (EditText) findViewById(R.id.edit_text); 
TextView myTextView = (TextView) findViewById(R.id.my_text_vew); 

mEditText.setFocusable(false); 
myTextView.setFocusable(true); 

這需要集中關閉的EditText 將它放在TextView上。