2012-02-20 87 views
1

當我setEnabled(false)或通過XML文件android:enabled="false"禁用的EditText,背景顏色將是灰色的:如何禁用EditText並保持背景顏色爲白色?

enter image description here

,如果我改變了白色android:background="@color/white"的背景下,我會失去邊界:

enter image description here

所以我的問題是,如何禁用的EditText(我不希望在其上長擊將筋疲力盡的任何對話),並保持邊境,因爲它是什麼?

+0

這個答案爲我工作(當這些都不一樣): http://stackoverflow.com/a/7696282/ 1686442 – 2013-04-04 15:14:22

回答

1

我找到了一種方法來做到這一點:

android:editable="false" 
android:cursorVisible="false" 
editText.setOnTouchListener(new View.OnTouchListener() 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     return true; 
    } 
}); 
+0

EditText沒有「setEditable」! – AVEbrahimi 2012-03-17 07:51:50

+0

@Avebrahimi是的,謝謝你通知我,我更新了答案! – 2012-03-17 15:21:17

0

嘗試使用TextView而不是android:background="#FFFFFF"。您也可以嘗試android:focusable="false"

3

最好的辦法是創建你自己的狀態列表Drawable,並指定禁用的背景與啓用狀態相同。您需要創建自己的9-Patch圖像,或者也可以從Android開放源代碼中提取資源文件。

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

下面是我用我的EditText背景樣本:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Active tab --> 
    <item android:state_focused="true" 
      android:drawable="@drawable/edittext_bg_selected" /> 
    <!-- Inactive tab --> 
    <item android:state_focused="false" 
      android:drawable="@drawable/edittext_bg_unselected" /> 

    <item android:state_enabled="false" 
      android:drawable="@drawable/edittext_bg_unselected" /> 

    <!-- Add all of your other states --> 
</selector> 

你只需要使用不同的狀態一塌糊塗創建你的作品。