используя класс, производный от TextView - PullRequest
1 голос
/ 20 июня 2010

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 голосов
/ 20 июня 2010

Вы должны создать макет следующим образом:

<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-файла вы используете такие элементы, как EditText, TextView и т. П., Вам не нужно указывать их полное имя (например, android.widget.TextView), так как Android их узнает; но когда вы определяете свои собственные представления, вы должны указать полное имя класса, который вы хотите показать, в данном случае com.a1.hd.hdRecordTaskListItemView.

...