天天看點

自定義View遇到的相關問題

1、在scrollView中加入自定義View

    (1),首先是要做一個水準滾動條,發現用scrollView 設定屬性android:scrollbars ="Horizontal"居然不行,然後才發 現要用HorizontalScrollView,真是醉了

     (2),需要HorizontalScrollView不顯示滾動條,解決如下:

android:scrollbars="none"
           

      (3),view的實際寬度為0,原因是沒有重寫onMeasure,當父容器可以無限大時子容器卻會size=0

解決如下

int screenWidth;
int screenHeight;
screenWidth=manager.getDefaultDisplay().getWidth();
screenHeight=manager.getDefaultDisplay().getHeight();
    @Override
    public void onMeasure(int widthMeasureSpec,int heightMeasureSpec){
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int width=MeasureSpec.getSize(widthMeasureSpec);
        int height=MeasureSpec.getSize(heightMeasureSpec);
        
        Log.v("MyBarChart", "width:"+width+" height:"+height);        
        this.setMeasuredDimension(screenWidth+200, height);//隻針對比對螢幕大小
    }
           

       (4),paint畫圓弧的時候發現圓弧角度小于360時不會顯示,這裡其實錯的地方很明顯,當我們把矩形的top和bottom弄反時就會出現這樣的問題

<pre name="code" class="java"><pre name="code" class="java">//RectF oval=new RectF(50,500,150,400);//--------------------->錯誤
           
RectF oval=new RectF(50,400,150,500);//--------------------->正确
canvas.drawArc(oval, 90, 270, false, p);
           

          (5), Paint設定透明度無效果:

Paint設定透明度必須要在設定顔色之後,否則無效果

Paint pieBgLineP=new Paint();
pieBgLineP.setStrokeWidth(5);
pieBgLineP.setColor(getResources().getColor(R.color.chart_Pie_bg_line));
pieBgLineP.setAlpha(145);//有效果
           
Paint pieBgLineP=new Paint();
pieBgLineP.setStrokeWidth(5);
<span style="font-size:18px;"></span><pre name="code" class="java">pieBgLineP.setAlpha(145);//無效果
           

pieBgLineP.setColor(getResources().getColor(R.color.chart_Pie_bg_line));

繼續閱讀