1
매우 간단한 사용자 정의보기에 문제가 있습니다. 그 의도는 단순한 수직 점선 만 그리는 것입니다. 상위 컨테이너의 눌려진 상태에 따라 선의 색상을 변경하고 싶습니다. 내가보기를 눌러 후 onDraw
메서드가 호출되지 가져옵니다,사용자 정의보기에 눌린 상태가 채워지지 않습니다.
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);
}
}
문제는 :이 코드가 있습니다. duplicateParentState
을 true로 설정하려고 시도했지만 전혀 도움이되지 않았습니다. 참고로이 레이아웃에는 두 개의 직접 형제가 있습니다 - 텍스트 뷰 - 선택기로 텍스트 색을 정의하고 텍스트 뷰에 사용할 수 있습니다. 내보기 구현에 문제가 있습니까? 선택기를 작동 시키려면 클래스에 무엇을 추가해야합니까?
시도는'추가 모션 이벤트를 사용하지 않고 나를 위해 일한 그 이상의 안드로이드 : 클릭에'= "true"를 사용자 정의'보기 '를위한 xml. –
사용자 정의보기의 레이아웃에서 android : duplicateParentState = "true"를 추가하십시오. –