안드로이드 개발 질문/답변
(글 수 45,052)
xml 파일에 ScrollView 와 LinearLayout 두개만 만들어 놓고
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/myLinearLayout"
>
</LinearLayout>
</ScrollView>
자바파일에서
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout myLinearLayout = (LinearLayout) findViewById(R.id.myLinearLayout);
SampleView Show_Noise = new SampleView(this);
myLinearLayout.addView(Show_Noise);
}
class SampleView extends View {
Paint p;
public SampleView(Context context) {
super(context);
p = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
int bh = 100, bw = 10;
int left = 30, top = 70;
super.onDraw(canvas);
LinearGradient lg1 = new LinearGradient(left, top, left + bw, top + bh,
new int[]{Color.RED, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA},
new float[]{0.2f, 0.4f, 0.6f, 0.8f, 1f}, Shader.TileMode.MIRROR);
p.setShader(lg1);
canvas.drawRect(left, top, left + bw, top + bh, p);
}
}
class SampleView extends View {} 커스텀뷰클래스를 만들어서 간단한 그림을 그린후 LinearLayout에 추가 시키는 단순한 코드인데요
위에 코드처럼 xml 파일에서 전체를 ScrollView로 감싸고 class SampleView extends View {} 커스텀뷰로 그린 그림을 LinearLayout에 추가하면 그림이 안나오고
ScrollView를 빼고 class SampleView extends View {} 커스텀뷰로 그림을 그린후에 LinearLayout에 추가시키면 그림이 나옵니다
이건 예제라 뷰가 없는데 개발중인 어플에는 뷰가 많아서 ScrollView로 꼭 전체를 감싸야 하는데 그러면 그림을 못그리네요
어떻게 해야할지 전혀 모르겠습니다ㅠㅠ
해결책을 아시면 답변좀 꼭 부탁드립니다




커스텀 위젯을 사용해야 합니다.
xml 디자인에서 스크롤로 감싼 커스텀 위젯 생성후 해당 위젯을 정의하는 class를 생성하셔서 사용하시면 됩니다.
자세한 내용은 커스텀 위젯을 참고해 보세요