TextView实现类似checkbox选择状态

1、TextView实现类似checkbox选择状态

package com.shoushan.zhenxin.view;


import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.Checkable;

public class CheckableTextView extends android.support.v7.widget.AppCompatTextView implements Checkable {

private boolean mChecked;

private static final int[] CHECKED_STATE_SET = {
        android.R.attr.state_checked
};

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

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

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

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

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

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

2、在xml中引用,

 <com.shoushan.zhenxin.view.CheckableTextView
    android:id="@+id/ctv_show"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:layout_marginTop="10dp"
    android:drawablePadding="10dp"
    android:drawableRight="@drawable/selector_client_status"
    android:gravity="center"
    android:text="收起"
    android:textColor="@color/color_f6aO2f"
    android:textSize="14dp" />

3、Selector相关

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/icon_pack_up" android:state_checked="true" />
     <item android:drawable="@drawable/icon_pack_down" android:state_checked="false" />
</selector>

JAVA代码中只需要简单setChecked调用就实现了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,950评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,302评论 19 139
  • 把对你的爱埋在树底,花开是你,花落也是你。 如果我有两个我 一个追梦想 一个陪伴父母 算算日子 与父母见面的次数也...
    阿白feeler阅读 864评论 0 1
  • 高考已经过去很久了 但是我对这场高考和它带给我的后面的故事,仍然有一千个一万个放不下和不甘心 高三那年叛逆和成长的...
    国王耳东阅读 1,560评论 0 1
  • 与君初相识,犹如故人归。 人世间的每一次相逢都是久别重逢,而每一次分别也有可能是此生不复相见。 01 我有一个亲戚...
    苏易子阅读 3,474评论 6 8