Android 2.3.3
Eclipse Version: 3.7.0
LogCat
AutoScrollTextView继承TextView,用于文字特殊效果显示,代码如下:
public class AutoScrollTextView extends TextView implements OnClickListener {
……
public void onDraw(Canvas canvas) {
……
canvas.drawText(text, temp_view_plus_text_length - step, y, paint);
……
}
……
}
Activity中使用:
nokia = (AutoScrollTextView) findViewById(R.id.nokia);
Activity对应的layout :
<com.jinhua.util.AutoScrollTextView
android:id="@+id/nokia" android:text="nokia" android:layout_height="fill_parent"
android:layout_width="40px" android:textColor="#999"
android:layout_gravity="right" android:background="#333">
</com.jinhua.util.AutoScrollTextView>
当Activity中取消使用AutoScrollTextView,而对应layout 未取消对应配置时,
LogCat 报错信息:
02-06 23:15:33.728: DEBUG/AndroidRuntime(1034): Shutting down VM
02-06 23:15:33.728: WARN/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): FATAL EXCEPTION: main
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): java.lang.NullPointerException
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.graphics.Canvas.drawText(Native Method)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at com.nokia.util.AutoScrollTextView.onDraw(AutoScrollTextView.java:181)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.View.draw(View.java:6880)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.View.draw(View.java:6883)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.widget.FrameLayout.draw(FrameLayout.java:357)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewRoot.draw(ViewRoot.java:1522)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.os.Looper.loop(Looper.java:123)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at java.lang.reflect.Method.invoke(Method.java:507)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-06 23:15:33.747: ERROR/AndroidRuntime(1034): at dalvik.system.NativeStart.main(Native Method)
02-06 23:15:33.797: WARN/ActivityManager(61): Force finishing activity com.nokia.tmall/.Ad
发生错误原因分析:
canvas.drawText(text, length, width, paint);
此处的paint为null,报错。
解决办法:在AutoScrollTextView.java中初始化paint,为其赋值。
paint = getPaint();
分享到:
相关推荐
android 8系统中的原码TextView.java, 可以查看官方的实现原理 ,对自定义 组件有一定 启发
TextView类继承自android.view.View类,并且是android.widget包下的一个成员,因此它是Android UI设计中的基础组件。TextView的主要职责是接收并显示文本,它可以是单行的,也可以通过设置多行显示。在Java代码中,...
2. 动态设置文本:在Java代码中,我们可以使用`TextView.setText()`方法来动态改变TextView的显示内容。 文本样式和格式化: 1. 字体样式:TextView支持粗体、斜体等样式,通过`android:textStyle`属性设置,如`...
TextView的基本使用包括设置文本、字体样式、颜色、大小等属性。例如,我们可以通过`android:text`属性来设置要显示的文本,`android:textSize`来调整字体大小,`android:textColor`来改变文字颜色,还可以通过`...
textView.setText(spannedText); final Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { // 滚动到最后一行 scrollView.fullScroll(ScrollView....
textView.font = UIFont.systemFont(ofSize: 16) textView.lineSpacing = 4 ``` 3. **自动缩放高度**: 当用户输入的文本增加时,`textView`的高度可能需要动态调整。可以监听`textView`的`DidChange`通知,...
创建一个继承自TextView的自定义View,重写onDraw()方法,在其中计算并应用滚动偏移量,然后调用invalidate()方法触发重绘,以实现文本的手动滚动。 **注意事项** - Marquee效果可能不会立即启动,可能需要等待一...
要创建自定义的跑马灯效果,我们首先创建一个新的Java类,让它继承自TextView。在新类中,我们将重写一些关键方法,以实现文本的自动滚动。这些方法可能包括`onDraw()`,用于绘制文字;`onMeasure()`,用于测量控件...
如果需要扩展TextView的功能,可以创建一个新的类继承自TextView,并添加额外的方法或属性。 总之,Android的TextView是构建用户界面不可或缺的一部分,熟练掌握其使用技巧和特性,能帮助开发者构建更丰富的UI交互...
let newSize = textView.sizeThatFits(textView.bounds.size) if textView.bounds.height != newSize.height { UIView.animate(withDuration: 0.3) { textView.bounds.size.height = newSize.height } } } ```...
textView.layer.borderColor = UIColor.gray.cgColor textView.layer.cornerRadius = 8.0 ``` 2. 使用内阴影:除了边框,还可以通过设置内阴影来创建编辑框效果。内阴影可以让`textView`看起来更有深度,提高视觉...
如果是RelativeLayout,可以使用`layout_height`属性。 ```java ViewGroup.LayoutParams layoutParams = getLayoutParams(); layoutParams.height = calculatedHeight; setLayoutParams(layoutParams); ``` 6...
textView.setMaxLines(Integer.MAX_VALUE); toggleButton.setText("收起"); } else { textView.setMaxLines(5); toggleButton.setText("全文"); } } }); ``` 3. **文字折叠计算**: 为了准确地判断何时显示...
textView.setTextColor(Color.parseColor("#FF0000")); // 设置红色文本 ``` 富文本: TextView还可以支持HTML文本,允许插入加粗、斜体、链接等元素: ```java String htmlText = "<b>加粗文本, 斜体文本</i>"; ...
教学过程中,教师将通过演示TextView的基本使用,展示如何在代码中创建和配置TextView,然后讲解其类继承结构,让学生理解其在Android组件中的地位。接着,深入讲解TextView的各个属性和方法,通过实例演示其效果。...
textView.placeholderLabel.font = [UIFont systemFontOfSize:15]; textView.placeholder = @"请输入文字..."; textView.font = [UIFont systemFontOfSize:15]; textView.frame = (CGRect){10,80,...
例如,使用Auto Layout进行约束设置: ```swift // 在Swift中设置约束 func setupConstraints() { NSLayoutConstraint.activate([ textView.topAnchor.constraint(equalTo: contentView.topAnchor), textView....
1. **自定义View**: 自定义TextView通常是通过继承Android的TextView类并重写其方法来实现的。开发者可能会覆盖`onDraw()`方法以控制文本的绘制方式,或者创建一个内部类来处理触摸事件,实现文本的放大和缩小。 2....