Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom onDraw() method not called

<LinearLayout android:id="@+id/svLL" android:orientation="horizontal"     android:layout_width="fill_parent" android:layout_height="fill_parent">     <ScrollView android:id="@+id/sv"         android:layout_width="wrap_content" android:layout_height="wrap_content"         xmlns:android="http://schemas.android.com/apk/res/android">         <!--             <TextView android:layout_width="match_parent"             android:layout_height="wrap_content"             android:text="@string/scrollbar_2_text" />         -->         <com.mypackage.MyDrawableView             android:layout_width="fill_parent" android:layout_height="wrap_content" />     </ScrollView> </LinearLayout> 

public class MyDrawableView extends View {      Context thisContext;      public MyDrawableView(Context context, AttributeSet attr) {         super(context);         thisContext = context;     }      @Override     protected void onDraw(Canvas canvas) {         super.onDraw(canvas);          final Paint paint = new Paint();         paint.setColor(Color.BLUE);         paint.setTextSize(12);         canvas.drawText("Blah blah", 0, 100, paint);     } } 

public class MyActivity extends Activity {     // Your member variable declaration here     // Called when the activity is first created.     @Override     public void onCreate(Bundle savedInstanceState) {         // Your code here super.onCreate(savedInstanceState);         setContentView(R.layout.xmllayout);         LinearLayout svll = (LinearLayout) findViewById(R.id.svLL);         svll.setLayoutParams(new LinearLayout.LayoutParams(300, 300));     }  }  

I am putting a breakpoint, but breakpoint is never hit inside onDraw() method, what's wrong ?

like image 390
mynameisanthpny Avatar asked Jul 27 '10 13:07

mynameisanthpny


2 Answers

Add setWillNotDraw(false) in MyDrawableView constructor. Original answer is here.

like image 115
Dragan Marjanović Avatar answered Oct 21 '22 12:10

Dragan Marjanović


Your View has a height of 0. You set your View to have height=wrap_content, but your don't override onMeasure() to tell the UI toolkit how big your View is.

like image 25
Romain Guy Avatar answered Oct 21 '22 11:10

Romain Guy