使用从TextView派生的类

时间:2010-06-19 20:07:34

标签: android draw

  
    

CoreStartHere.java

  
 public class CoreStartHere extends TabActivity {

    :
 t = getTabHost();
 t.newTabSpec("tTask");
 t.setIndicator(...);
 t.setContent(new Intent().setClass(this, T1Task.class);
 :

}
  
    

t1Task.java

  
    T1Task extends Activity {

 :
 onCreate(Bundle ...) {

  :
  myListview = (ListView) findViewById(R.id.hdListView);
  myEditText = (EditText) findViewById(R.id.hdEditText);
  hdItems  = newArrayList <String>();
  aa = new ArrayAdapter <String>(this, R.layout.hditemview, hdItems);
  :

  setOnKeyListener (new OnKeyListener() {

   onKey(...) {

    :
    hdItems.add(0, myEditText.getText().toString());
    aa.notifyDatasetChanged();
    :
   }
  }


 }
}
  
    

hditemview.xml

  
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
 class="com.a1.hd.hdRecordTaskListItemView"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:padding="10dp"
 android:scrollbars="vertical"
 android:textColor="@color/HD_Text"
 android:fadingEdge="vertical"
 />
  
    

hdRecordTaskListItemView.java

  
    hdRecordTaskListItemView extends TextView {

 // has 3 constructors

 // onDraw

}

hdRecordTaskListItemView中的任何构造函数都不会被调用,并且不会令人惊讶地onDraw也不会被调用。缺什么? - 任何建议或问题 - 请告诉我。文本显示为默认样式。 onDraw应该在“画布”上绘制。 谢谢

1 个答案:

答案 0 :(得分:0)

您必须以这种方式创建布局:

<com.a1.hd.hdRecordTaskListItemView xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:padding="10dp"
 android:scrollbars="vertical"
 android:textColor="@color/HD_Text"
 android:fadingEdge="vertical"
 />

在通过XML文件构建布局时,您使用EditTextTextView之类的元素,您不必提供其完整名称(例如android.widget.TextView)作为android会认出来的;但是,当您定义自己的视图时,您必须指明要显示的类的完整名称,在本例中为com.a1.hd.hdRecordTaskListItemView