2012-05-23 3 views
1

Я могу добавить editText в scrollview и любой другой компонент, но когда я пытаюсь вставить холст, ничего не появляется. Я показываю код для получения дополнительной информацииПроблемы с рисованием с холстом в scrollview

package prueba.android.ondraw; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.LinearLayout; 

public class Prueba_ondrawActivity extends Activity { 
    private static final String LOGTAG = ""; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 
     LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 

     MyView v = new MyView(this); 

     layout.addView(v); 

    } 
    private class MyView extends View{ 
     public MyView(Context context) { 
      super(context); 
     } 
     protected void onDraw(Canvas canvas) { 
      int j = 0; 
      for(int i=0;i<10;i++){ 
       super.onDraw(canvas); 
       Paint paint = new Paint(); 
       paint.setColor(Color.CYAN); 
       paint.setAntiAlias(true); 
       int ancho= canvas.getWidth(); 
       String ancho2 = "" + ancho; 
       Log.e(LOGTAG,ancho2); 
       canvas.drawRect(0, 0,200,200, paint); 
       j= j+100; 
      } 
     } 
    } 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="150dp" 
     android:layout_height="400dp" 
     android:layout_marginLeft="100dp" 
     android:background="#FFFFFF" 
     > 
     <LinearLayout 
      android:id="@+id/layout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

Я надеюсь, что кто-то может дать мне решение, потому что он не может найти, как рисовать в Scrollview

Thanksss

ответ

4

Вы не видите ничего, потому что ваш пользовательский вид не имеет размера. Либо используйте LayoutParams, либо напрямую передайте размер пикселя. Кроме того, можно реализовать onMeasure Некоторые больше информации является here

layout.addView(v,300,300); 

Также вам не нужно вызывать super.onDraw или создать новую краску на каждой итерации.

+0

Это была моя проблема решена благодаря! –

+0

Привет, у меня такая же проблема, как у вас. его не решая. Каково решение. Что я пишу в методе onMeasure? – djk

+0

Это сработало для меня, когда я создавал элемент canvas и рисовал его, а затем мне нужно было установить размер, когда я вызывал addview() ранее, когда я вызывал его без его свойств ширины и высоты. – raddevus

0

Если вы просто хотите нарисовать и показать его, вы можете поместить ImageView в ScrollView и отобразить его следующим образом:

newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
canvas = new Canvas(newBitmap); 
canvas.drawSomething(); 
imageView.setImageBitmap(newBitmap); 

надеюсь, что это помогает;)

+0

Спасибо, это должно быть добавлено или должно заменить его чем-то? Сделайте это под canvas.drawSomething() ;? Я не понимаю, как применить его решение к моей проблеме. –

+0

Это был бы способ сделать это, не делая пользовательский вид. Что вам нужно будет сделать, это поместить изображение в прокрутку (в вашем xml-файле) и сделать метод под названием, который вам нравится, и поместить туда код. В основном вы создаете пустую растровую карту, и вы можете это сделать. – hjm

Смежные вопросы