main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="----"
/>
<com.myTextViewDemo.MyTextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="change"
/>
</LinearLayout>
public class MyTextViewDemo extends Activity {
private MyTextView mt;
private Button btn;
private TextView tv;
private int i = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mt = (MyTextView) findViewById(R.id.text);
tv = (TextView) findViewById(R.id.title);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("adsf:" + i++);
}
});
}
}
自定义TextView
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
System.out.println("--------------- onDraw --------------");
super.onDraw(canvas);
}
} 现在的问题是,当点击button时,会改变tv的值,但是(MyTextView)mt .onDraw也会被调用,而且点击几次就调用几次,这是为什么??
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="----"
/>
<com.myTextViewDemo.MyTextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="change"
/>
</LinearLayout>
public class MyTextViewDemo extends Activity {
private MyTextView mt;
private Button btn;
private TextView tv;
private int i = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mt = (MyTextView) findViewById(R.id.text);
tv = (TextView) findViewById(R.id.title);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("adsf:" + i++);
}
});
}
}
自定义TextView
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
System.out.println("--------------- onDraw --------------");
super.onDraw(canvas);
}
} 现在的问题是,当点击button时,会改变tv的值,但是(MyTextView)mt .onDraw也会被调用,而且点击几次就调用几次,这是为什么??
解决方案 »
- android Camera设置参数failed
- file.createNewFile()的Permission denied异常。。
- 关于MediaPlayer的一个小问题
- GDB如何在ANDROID的中使用
- Graphical layout的问题
- 编译android源码时,gcc将中定义了__x86_64__,编译不过,错误如下。我的PC是32位的,应该如何设置?
- openGL es 网格纹理真机不显示
- 哪里更改自己写的Shell Command的权限?
- "D:\\Android\\android-ndk-r10\\android-ndk-r10\\ndk-build.cmd" 系统找不到指定的路径。
- xamarin存档android程序出现问题
- TextView EditText 居中对齐
- 关于频繁更新UI,崩溃问题~~~~~
那tv控件如果是类似秒表功能,tv显示内容一直在变,那mt.onDraw也就一直在调用了??
上述情况里,mt的焦点改变(应该是失去)了,所以系统要求其重绘,以显示改变焦点后的样子。