自定义控件嵌套在ScrollView里面不显示

本文讲述了作者在公司项目中遇到的一个挑战:如何将自定义的饼状图控件正确地嵌套在ScrollView内。在尝试各种开源解决方案未果后,作者决定自己动手绘制饼状图。然而,当饼状图控件放入ScrollView时,无法正常显示,高度始终为0。作者分享了自己尝试解决这个问题的方法,即在自定义View类中重写onMeasure方法。
摘要由CSDN通过智能技术生成

公司的需求,有个饼状图统计收入,所以我就自定义控件,起初以为这个图太困难了,扇形的大小要随时变化,还有上面的折线,拿到成型图后就去网上找demo但是都不太一样,github上那个开源的还带着library,觉得好麻烦,于是就静下心自己画,画好后放在ScrollView里怎么也加载不出来,就是在加载的时候高始终是0,在网上搜了一些方法也不管用,我的方法:

在自定义View类中MyView(class MyViewextends View)重写onMeasure方法

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#000000"
                android:orientation="vertical" >
                <TextView android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:padding="100dp"
                    android:textSize="45sp"
                    android:text="sdfd"/>
                
            </LinearLayout>
            <com.example.view.MyView
                android:id="@+id/my_view"
                android:background="#baffff"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>



package com.example.view;

import com.example.view.MainActivity.GlobalFun;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

@SuppressLint("DrawAllocation")
public class MyView extends View {

	/**
	 * 大扇形半径
	 */
	private static final int BR = 100;
	/**
	 * 中等扇形半径
	 */
	private static final int MR = 90;
	/**
	 * 小扇形半径
	 */
	private static final int SR = 80;

	/**
	 * 开始绘制的起始角度
	 */
	private static final int START = 90;
	/**
	 * 扇形圆心x坐标
	 */
	private static int CX;
	/**
	 * 扇形圆心y坐标
	 */
	private static int CY;
	/**
	 * 大扇形内部圆心x坐标
	 */
	private static int BX;
	/**
	 * 大扇形内部圆心y坐标
	 */
	private static int BY;
	/**
	 * 中等扇形内部圆心x坐标
	 */
	private static int MX;
	/**
	 * 中等扇形内部圆心y坐标
	 */
	private static int MY;
	/**
	 * 小扇形内部圆心x坐标
	 */
	private sta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值