Android自定义控件在scrollview中设置高度不起作用,已经重写了 onMeasure方法 3C

布局:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/title_template"
            android:layout_width="match_parent"
            android:text="hahahah"
            android:layout_height="700dp" />

        <com.tky.mpchart.View.BarChart2View
            android:id="@+id/fl_chart2"
            android:layout_below="@+id/title_template"
            android:layout_width="match_parent"
            android:layout_height="600dp" />
    </RelativeLayout>
</ScrollView>

    自定义控件:

     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    this.setMeasuredDimension(this.measureWidth(widthMeasureSpec), this.measureHeight(heightMeasureSpec));
}

private int measureWidth(int measureSpec) {
    int result = 100;
    int specMode = MeasureSpec.getMode(measureSpec);
    int specSize = MeasureSpec.getSize(measureSpec);
    if(specMode == 1073741824) {
        result = specSize;
    } else if(specMode == -2147483648) {
        result = Math.min(result, specSize);
    }

    return result;
}

private int measureHeight(int measureSpec) {
    int result = 100;
    int specMode = MeasureSpec.getMode(measureSpec);
    int specSize = MeasureSpec.getSize(measureSpec);
    if(specMode == 1073741824) {
        result = specSize;
    } else if(specMode == -2147483648) {
        result = Math.min(result, specSize);
    }

    return result;
}

2个回答

你把RelativeLayout的高度改成wrap_content看看

qq_23146625
qq_23146625 已经解决了,是硬件加速问题。关闭就好了,谢谢。。。
3 年多之前 回复

你的吧ScrollView 里面的那层换成linearlayout

http://blog.sina.com.cn/s/blog_6cf2ea6a0102v61f.html

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!