2013-05-20 54 views
1

我想有以下幾點:。 一個TextView是 )點擊 時改變其背景)維持這樣的背景下,直到再次單擊機器人 - 如何有一個可以點擊的,可檢驗的TextView

這一切都到「可檢查」狀態,但我無法弄清楚這是如何工作的。這裏是我用於背景的xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- pressed --> 
<item android:drawable="@drawable/menuselected" 
android:state_pressed="true" /> 

<!-- checked --> 
<item android:drawable="@drawable/menuselected" 
android:state_checked="true" /> 

<!-- default --> 
<item android:drawable="@drawable/transpixel"/> 

</selector> 

更新:它現在部分工作。我爲我的自定義Textview採用了http://kmansoft.com/2011/01/11/checkable-image-button/的大部分代碼。實際上,我這樣做了,我也需要單選按鈕的功能。 現在我可以檢查Textview,但我無法取消選中它。有人明白爲什麼可能是這種情況?

回答

1

定製TextView實現android.widget.Checkable接口。這應該足以讓你的選擇器工作。

下面是示例實現:

public class CheckableTextView extends TextView implements Checkable { 
    private boolean isOn=false; 

    public CheckableTextView(Context context) { 
     super(context); 
    } 

    public CheckableTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CheckableTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public int[] onCreateDrawableState(final int extraSpace) { 
     final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 
     if (isChecked()) 
      mergeDrawableStates(drawableState, CHECKED_STATE_SET); 
     return drawableState; 
    } 

    @Override 
    public void setChecked(boolean checked) { 
     isOn=checked; 
     refreshDrawableState(); 
    } 

    @Override 
    public boolean isChecked() { 
     return isOn; 
    } 

    @Override 
    public void toggle() { 
     isOn=!isOn; 
     refreshDrawableState(); 
    } 

} 
+0

謝謝到目前爲止,t帽子似乎很合理。我不確定如何實現方法isChecked(),setChecked(boolean a)和toggle()。你能給我一個提示嗎? – user1995099

+0

@ user1995099更新了我的答案。 –

+0

這是非常簡單,但不知何故,它仍然無法正常工作。這個問題仍然是開放的。 – user1995099

3

您可以使用CheckedTextView與 對號空 和 背景您可選擇

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:checkMark="@null" 
    android:background="@drawable/selectable"/> 

您的選擇可以

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" android:drawable="@drawable/selector" /> 
</selector>