使用画布后没有任何显示

时间:2014-06-05 09:16:36

标签: android canvas

我正在尝试绘制线条和矩形,并且线条完美地工作,但是当我尝试绘制它们没有显示的矩形时,所以我评论了方法并将矩形放在布局的背景中,但即便如此没有表现出来。

MainActivity.class

protected void onCreate (Bundle savedInstanceState {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
line = (LinearLayout)findViewById(R.id.line);
doLine DoLine = new doLine(line.getContext (),0.2,0.4,0.4);
line.addView(DoLine);
}

DoLine.class

public DoLine (Context context, double first, double second, double third){
   super (context);
   one = first;
   two = second;
   three = three;
}
@SuppressLink("DrawAllocation")
public void onDraw (Canvas canvas){
canvas.drawRGB (255,255,255);
Paint pincel1 = new Paint;
pincel1.setColor(getResources().getColor(R.color.yellow));
canvas.drawRect(0,10, getWidth(),40,pincel1);
pincel1.setColor(getResources().getColor(R.colot.green));
canvas.drawRect((float)(getWidth()*one),10, getWidth(),40,pincel1);
pincel1.setColor(getResources().getColor(R.color.blue));
canvas.drawRect((float)(getWidth()*one),10, (float)(getWidth()-(getWidth()*three)),40, pincel1);

activity_main.xml中

<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:background="#dcdcdc"
android:orientation="vertical"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:background="#fdfdfd"
android:orientation="vertical"
android:padding="3dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="35dp"
android:background="#90ffb200"
android:padding="5dp" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginRight="5dp"
android:gravity="right"
android:text="@string/title"
android:textSize="17sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="5dp" >
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="5dp">
<LineraLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal
<LinearLayout
android:id="@+id/rectyellow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/yellow
</LinearLayout>
<TextView
android:id="@+id/oneText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="one" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
<LinearLayout
android:id="@+id/rectblue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/blue"
</LinearLayout>
<TextView
android:id="@+id/twoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="two" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
<LinearLayout
android:id="@+id/rectgreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/green"
</LinearLayout>
<TextView
android:id="@+id/threeText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Three" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:1)

我已经研究了很多天才找到解决方案,今天我发现它,我只需要将布局的高度更改为40dp

   android:layout_height="wrap_content"// change this to 40dp

mainActivity.xml

<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:background="#dcdcdc"
  android:orientation="vertical"
  tools:context=".MainActivity" >
<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_margin="5dp"
  android:background="#fdfdfd"
  android:orientation="vertical"
  android:padding="3dp" >
<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="35dp"
  android:background="#90ffb200"
  android:padding="5dp" >
<TextView
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:layout_marginRight="5dp"
 android:gravity="right"
 android:text="@string/title"
 android:textSize="17sp" />
</LinearLayout>
<LinearLayout
 android:id="@+id/line"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"// change this to 40dp
 android:orientation="vertical"
 android:paddingLeft="5dp"
 android:paddingRight="5dp" >
</LinearLayout>
<LinearLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:paddingLeft="5dp">
<LineraLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal
<LinearLayout
 android:id="@+id/rectyellow"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:background="@drawable/yellow
 </LinearLayout>
<TextView
 android:id="@+id/oneText"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="one" />
</LinearLayout>
<LinearLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
<LinearLayout
 android:id="@+id/rectblue"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 android:background="@drawable/blue"
</LinearLayout>
<TextView
 android:id="@+id/twoText"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="two" />
</LinearLayout>
<LinearLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal"
 <LinearLayout
  android:id="@+id/rectgreen"
  android:layout_width="wrap_content"
  android:orientation="horizontal"
  android:background="@drawable/green"
 </LinearLayout>
<TextView
 android:id="@+id/threeText"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Three" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>

https://www.dropbox.com/s/8dvmgv1k37tnm9f/Sin%20t%C3%ADtulo.png

答案 1 :(得分:0)

是的:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout line = (LinearLayout)findViewById(R.id.line);
        DoLine doLine  = new DoLine(line.getContext (),0.2,0.4,0.4);
        line.addView(doLine);
    }


    public class DoLine extends View {
        double one;
        double two;
        double three;

        public DoLine(Context context, double first, double second, double third) {
            super(context);
            one = first;
            two = second;
            three = third;
        }

        @SuppressLint("DrawAllocation")
        public void onDraw(Canvas canvas) {
            canvas.drawRGB(255, 255, 255);
            Paint pincel1 = new Paint();
            pincel1.setColor(Color.YELLOW);
            canvas.drawRect(0, 10, getWidth(), 40, pincel1);
            pincel1.setColor(Color.GREEN);
            canvas.drawRect((float) (getWidth() * one), 10, getWidth(), 40, pincel1);
            pincel1.setColor(Color.BLUE);
            canvas.drawRect((float) (getWidth() * one), 10, (float) (getWidth() - (getWidth() * three)), 40, pincel1);
        }


    }
}

enter image description here