을 그리기 때문에 이렇게 많은 질문이 있다는 것을 알고 있지만 답변 중 아무 것도 효과가 없었습니다.안드로이드 : 사용자 정의보기는
나는 ScrollView
(모두 프로그래밍 방식으로)에 넣으려고하는 사용자 정의 View
이 있습니다. ScrollView
자체가 잘 작동하고, 필요한 위치이며, 수행해야 할 작업을 수행하고 TextView
을 추가하여 테스트했을 때 여전히 예상했던대로 작동합니다.
그러나 사용자 정의 View
을 만들면보기가 그려지지 않으며 아무 것도없는 것처럼 보입니다. draw(Canvas canvas)
메서드는 호출되지 않습니다 (차이점을 모르지만 여전히 작동하지 않음에도 불구하고 onDraw
으로 시도 함).
나는 그림을 그리거나 다시 그리기를 원할 때마다 View.invalidate()
이라는 생성자에서 setWillNotDraw(false)
과 같은 것들을 시도했지만 아무것도 작동하지 않는 것으로 보입니다. 여기
private class LevelSelectionView extends View {
private ArrayList<LevelButton> levelButtons;
public LevelSelectionView(Context context) {
super(context);
levelButtons = new ArrayList<LevelButton>();
int x = 20;
int y = 20;
for(int i = 0; i < 20; i++) {
levelButtons.add(new LevelButton(x, y, 100, 100, 10, i + 1));
levelButtons.get(i).unlock();
x += 100 + 20;
}
setWillNotDraw(false);
}
public void draw(Canvas canvas) {
super.draw(canvas);
System.out.println("is being called"); //except it isn't
Paint paint = new Paint();
paint.setAntiAlias(env.getCurrentSettings().getAntialias());
for(LevelButton lb : levelButtons)
lb.drawObject(canvas, paint);
}
}
있는 ScrollView 초기화 된
sv = new ScrollView(env.getContext());
ScaledBounds sb = UsefulMethods.getScaledBounds(50, 200, BBEnvironment.WIDTH - 100, BBEnvironment.HEIGHT - 300);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(sb.getWidth(), sb.getHeight());
sv.setTranslationX(sb.getX());
sv.setTranslationY(sb.getY());
sv.setLayoutParams(params);
sv.setScrollbarFadingEnabled(false);
sv.setScrollBarSize(0);
sv.setBackgroundColor(Color.argb(150, 0, 255, 0));
사용자 정의보기
LevelSelectionView lsView = new LevelSelectionView(sv.getContext());
lsView.setLayoutParams(new RelativeLayout.LayoutParams(sv.getLayoutParams().width, 1000));
lsView.setBackgroundColor(Color.argb(150, 0, 0, 255));
sv.addView(lsView);
왜 그리기가 아니며 어떻게 그릴 수 있습니까?
ScrollView에'view'를 어떻게 추가 했습니까? 변수를 페인트하기 위해 색상을 설정하려고 했습니까? 사용자 정의보기가 xml에서 개별적으로 작동합니까? – emiraslan
@emiraslan은 코드를 자르는 것처럼 보입니다. 'View'는'sv.addView (lsView)'를 사용하여'ScrollView'에 추가됩니다. 참고 : 관련 코드가 추가되었습니다 – Ryan
draw 대신 onDraw (Canvas)를 오버 라이딩해야합니다. CustomView를 만들고 추가하는 코드를 ScrollView에 추가 할 수 있습니까? – Eselfar