제가 지금 View를 상속 받아 onDraw를 오버라이딩 했습니다.

그래서 Canvas로 글씨를 출력했는데.

가로 화면-> 세로 화면으로 바뀔때

View의 사이즈도 0으로 나오고

사이즈를 억지로 줘봐도 화면에 글씨도 출력이 되지 않습니다.

혹시 왜 안되는지 아시는 분 계신가요.

View 부분 소스 입니다.

 public class ComparePrice_GraphView extends View {
    private ArrayList<ArrayList<String[]>> values;
  
    private final String[] keyValues;
  
    private String[] horlabels;
    
    private String[] verlabels;

    private String title;

    
    public ComparePrice_GraphView(Context context, ArrayList<ArrayList<String[]>> values,
            String[] keyValues, String title, String[] horlabels,String[] verlabels) {
        super(context);
        
        ShoppingNoteLog.i("graphView Constructor!!");
        if (values == null) {
            values = null;
        } else {
            this.values = values;
        }

        this.keyValues = keyValues;

        if (title == null) {
            title = "";
        } else {
            this.title = title;
        };
        if (horlabels == null) {
            this.horlabels = new String[0];
        } else {
            this.horlabels = horlabels;
        };
        if (verlabels == null) {
            this.verlabels = new String[0];
        } else {
            this.verlabels = verlabels;
        };

    }

    /**
     * グラフを書く
     *
     * @see android.view.View#onDraw(android.graphics.Canvas)
     */
    @Override
    protected void onDraw(Canvas canvas) {
        ShoppingNoteLog.i("graphView onDraw!!");
        super.onDraw(canvas);

        Paint paint = new Paint();

        float border=returnFromDipToPixel(30);
        
        // 縦の開始点
        float horstart = border * 2;
        // グラフ画面の高さ
        float height = getHeight() - border;
        // グラフ画面の長さ
        float width = getWidth() - 5;
        // 最後の値
        float max = getMax();
        // 最低の値
        float min = getMin();
        if (max == min) {
            min = 0;
        }

        // グラフの深さ
        float diff = max - min;
        // グラフの高さ
        float graphheight = height - (2 * border);
        // グラフの長さ
        float graphwidth = width - (2 * border);
        // 線の色
        int[] color = new int[] {
        Color.rgb(0, 102, 255), Color.rgb(0, 180, 0), Color.rgb(255, 102, 0) 
        , Color.rgb(102, 220, 51), Color.rgb(255, 255, 180), Color.rgb(0, 255, 102) };
        paint.setTextAlign(Align.CENTER);
        paint.setColor(Color.WHITE);
        canvas.drawText(title, (graphwidth / 2) + horstart, border - 15, paint);
        ShoppingNoteLog.i("graphView drawText!!"+title+getHeight());
}
}




안드로이드 개발자 입니다.

많은 정보 공유 했으면 좋겠습니다^^