压缩状态未填充到我的自定义视图

时间:2013-09-21 19:11:07

标签: android android-custom-view android-selector

我的简单自定义视图存在问题。它的目的只是绘制简单的垂直虚线。我想根据其父容器的按下状态更改该行的颜色。我有这段代码:

public class DottedLine extends View {

    float density ;
    float size;
    Paint paint;

    public DottedLine(Context context) {
        this(context, null, 0);
    }

    public DottedLine(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public DottedLine(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
        density = metrics.density;
        size = 2 * density; //2dp
        paint = new Paint();
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setStrokeWidth(size);
        paint.setColor(getResources().getColor(R.color.main_kosapp));
        paint.setPathEffect(new DashPathEffect(new float[] {size, size}, 0));

    }

    @Override
    protected void onDraw(Canvas canvas) {
        float diff =  canvas.getHeight()%size;

        Path path = new Path();
        path.moveTo(canvas.getWidth()/2, diff/2);
        path.lineTo(canvas.getWidth() / 2,canvas.getHeight()-diff/2);

        if(this.isPressed() || this.isFocused()) {
            paint.setColor(getResources().getColor(R.color.light_gray));
        } else {
            paint.setColor(getResources().getColor(R.color.main_kosapp));
        }
        canvas.drawPath(path, paint);
    }
}

问题是,按下视图后没有调用onDraw方法。我试图将duplicateParentState设置为true,但它根本没有帮助。在我的布局中,这个视图有两个直接的兄弟 - 文本视图 - 它们的文本颜色都是用选择器定义的,它适用于那些文本视图。 我的视图实现有什么问题?我需要在课程中添加什么才能使选择器工作?

1 个答案:

答案 0 :(得分:1)

通过覆盖dispatchSetPressed

,您应该使您的视图无效
paramiko import SSHClient

至少在没有使用动作事件的情况下对我有用