- 浏览: 40379 次
最新评论
-
keshuangjie:
listView.setSelectionFromTop(li ...
Android 记录和恢复ListView滚动的位置( 完美实现 ) -
glaivelee-michele:
scrolledX = listView.getScrollX ...
Android 记录和恢复ListView滚动的位置( 完美实现 )
package com.text.view;
import java.util.Arrays;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
public class MyView extends View {
private Paint mPaint = new Paint();
public MyView(Context context) {
this(context,null);
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyView(Context context, AttributeSet attrs) {
this(context,attrs,0);
}
private void init() {
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLACK);
mPaint.setStyle(Style.STROKE);
mPaint.setTextSize(getRawSize(TypedValue.COMPLEX_UNIT_DIP, 12));
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// setMeasuredDimension(300, 200);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//canvas.drawColor(Color.WHITE);
FontMetrics fm = mPaint.getFontMetrics();
float baseline = fm.descent - fm.ascent;
float x = 0;
float y = baseline;
//注释掉的是当使用多段TextView时使用
String txt1 = getResources().getString(com.middle.sport.R.string.more1);
//String txt2 = getResources().getString(com.middle.sport.R.string.more2);
//String txt3 = getResources().getString(com.middle.sport.R.string.more3);
String[] text1s = autoSplit(txt1, mPaint, getWidth() - 15);
//String[] text2s = autoSplit(txt2, mPaint, getWidth() - 15);
//String[] text3s = autoSplit(txt3, mPaint, getWidth() - 15);
System.out.printf("line indexs: %s\n", Arrays.toString(text1s));
//System.out.printf("line indexs: %s\n", Arrays.toString(text2s));
//System.out.printf("line indexs: %s\n", Arrays.toString(text3s));
for(String text1 : text1s) {
canvas.drawText(text1, x, y, mPaint);
y += baseline + fm.leading;
}
/* y += 20;
for(String text2 : text2s) {
canvas.drawText(text2, x, y, mPaint);
y += baseline + fm.leading;
}
y += 20;
for(String text3 : text3s) {
canvas.drawText(text3, x, y, mPaint);
y += baseline + fm.leading;
}*/
}
private String[] autoSplit(String content, Paint p, float width) {
int length = content.length();
float textWidth = p.measureText(content);
if(textWidth <= width) {
return new String[]{content};
}
int start = 0, end = 1, i = 0;
int lines = (int) Math.ceil(textWidth / width);
String[] lineTexts = new String[lines];
while(start < length) {
if(p.measureText(content, start, end) > width) {
lineTexts[i++] = (String) content.subSequence(start, end);
start = end;
}
if(end == length) {
lineTexts[i] = (String) content.subSequence(start, end);
break;
}
end += 1;
}
return lineTexts;
}
public float getRawSize(int unit, float size) {
Context c = getContext();
Resources r;
if (c == null)
r = Resources.getSystem();
else
r = c.getResources();
return TypedValue.applyDimension(unit, size, r.getDisplayMetrics());
}
}
发表评论
-
将Excel中的数据转换成sql Insert语句
2015-12-14 22:55 8601.或者用sql Server 2000 还有 导入的方 ... -
标准MD5
2015-05-23 14:56 516import java.security.Message ... -
加载时不直接弹出输入法
2015-05-23 10:38 608<?xml version="1.0&quo ... -
ActionBar-PullToRefresh集成好的Demo
2015-03-01 10:59 556ActionBar-PullToRefresh集成好的De ... -
手机设备的唯一标识符
2014-12-26 22:20 1985有很多场景和需求你需要用到手机设备的唯一标识符。例如,略。在 ... -
imageloader使用
2014-12-25 14:10 594http://blog.csdn.net/vipzjyno1/ ... -
仿京东时间选择器
2014-12-19 08:29 759运行效果图如下: 可选择当天10后19点前的时 ... -
仿京东时间选择器
2014-12-19 08:29 0运行效果图如下: 可选择当天10后19点前的时间 ... -
svn 报错
2014-09-17 13:03 615刚装SVN插件的时候没问题,可以连接服务器,后来因为公司一些 ... -
获取View距离父视图的高度
2014-07-26 14:05 1393/** * m_scrollview代表父视图 ... -
Android编程之仿微信显示更多文字的View (带源码)
2014-07-17 17:05 839引用:http://blog.csdn.net/xyz_f ... -
百度地图定位 BDLocationListener 不起作用
2014-06-14 09:46 1130最近利用百度地图的api和提供的demo做定位,发现用百度提 ... -
RadioButton 选中问题
2014-06-11 09:54 1172final RadioGroup radioGroup=( ... -
获取Android签名证书的sha1值MD5值
2014-05-19 11:24 30571.项目右键,Android Tools->Expo ... -
Android 播放器源码 vitamio 工具源码下载
2014-04-15 18:34 1196http://download.csdn.net/deta ... -
Android让Library中Manifest也包含进来
2014-02-27 15:22 3017Android可以通过use library来引用另一个P ... -
我的仿微信开发心得
2013-12-24 14:30 0刚开始我是信心满满的开发,很多东西就是为了实现而实现,结果,错 ... -
SlidingMenu带左右的
2013-12-17 17:34 373好用的,只有源码!!! -
Android图片处理内存溢出学习
2013-12-15 10:51 784最近遇到一个问题,在Android机器上,调用自带的相机拍摄 ... -
SlidingMenu-master中的example怎样导入eclipse运行
2013-12-13 00:51 1035相信能看这篇教程 ...
相关推荐
自定义view解决android文本排版和换行问题自定义view解决android文本排版和换行问题自定义view解决android文本排版和换行问题自定义view解决android文本排版和换行问题自定义view解决android文本排版和换行问题...
本文将深入探讨`TextView`在处理文字排版和换行方面的知识,以及如何优化其性能。 ### 一、TextView的基础用法 1. **XML布局中声明TextView** 在布局文件中,我们通常通过以下方式声明一个`TextView`: ```xml ...
本文将详细讲解如何解决TextView的自动换行问题,并结合提供的`CustomTextView.java`源码和`textattr.xml`资源文件来深入理解这一技术。 首先,了解TextView的基本属性。TextView默认会根据其宽度自动进行换行,以...
MTextView是针对原生Android TextView进行优化的一个类,它专门处理了提前换行的问题,尤其是在处理含有图片、特殊符号或复杂排版的文本时。这个自定义视图通常会提供更精确的文本测量和布局计算方法,以确保文字...
在`MyTextView2`这个文件中,可能是作者提供了一个自定义的`TextView`类,扩展了标准的`TextView`功能,解决了自动换行和`SpannableString`的排版问题。这样的自定义`TextView`可能会覆盖`onDraw()`方法,或者提供...
android开发中的textview可以自动换行,但是对于显示纯英文文字来说很好用,如果夹杂了中文字符后,全角字符和半角字符混在一块儿,就会出现文字排版参差不齐,超级难看,这就需要重写textview来实现我们需要的显示...
然而,有时开发者会遇到一个棘手的问题,即`TextView`中的换行文字可能不会对齐,尤其是在多行显示时。这个问题通常表现为每一行的起始位置不一致,影响了整体布局的美观度。本文将深入探讨这个问题及其解决方案。 ...
"浅谈Android textview文字对齐换行的问题" Android TextView 文字对齐换行的问题是一个常见的Android开发问题。...通过这两种方法,可以解决TextView 中文字对齐换行的问题,实现文字排版的整齐性和美观性。
总的来说,解决TextView的排版问题需要对Android的文本渲染机制有深入的理解,并灵活运用各种属性和工具。在项目中,应根据具体需求选择最合适的方法,以实现美观且易读的文本展示。`AlignTextView-master`可能提供...
在Android开发中,动态文字排版是一个常见...以上就是关于“Android动态文字排版”的详细介绍,希望对你在Android开发中实现类似功能有所帮助。记得在实际项目中考虑性能优化和用户体验,使得排版切换过程平滑且高效。
总之,Android AutoWrapTextView的实现涉及到自定义视图的绘制、属性解析、文本处理等多个方面,它通过自定义的绘制逻辑解决了中英文排版问题,提供了更加美观和统一的显示效果。这种自定义组件的开发对于优化用户...
`TextViewVertical`是一个针对特定需求的自定义组件,它扩展了Android的`TextView`功能,实现了竖直文字排列和横向滚动,对于开发者来说,研究和掌握此类组件的实现,不仅有助于解决实际问题,也能加深对Android UI...
总之,“解决DrawText中文字与字母之间自动换行”的核心在于理解和适配不同字符类型的排版规则,通过适当的算法和数据结构优化,可以在保持代码清晰的同时提高文本布局的效率和准确性。这不仅是Windows编程中的一个...
这个功能主要用于在打印文档时,不仅能够处理文本的自动换行以适应页面布局,还能结合图片进行混合排版,并且提供预览功能以便用户在正式打印前检查效果。以下将详细阐述这些知识点: 1. 图片处理: - `System....
然而,在处理中文文本时,可能会遇到一个问题:中文字符不换行,这会给PDF的排版带来困扰。本篇文章将详细探讨这个问题以及如何解决。 首先,我们需要理解Itext库的工作原理。Itext库基于PDF规范,它提供了丰富的...
本文将探讨如何有效地实现英文自动换行,并通过CSS属性如`word-wrap`和`word-break`来解决这一问题。 #### 二、CSS中的换行控制属性 在CSS中,有几种属性可以用来控制文本的换行行为,包括`word-wrap`和`word-...
总之,`GridView`和`ArrayAdapter`是Android开发中的重要组件,通过它们,你可以轻松实现动态文字排版或其他复杂的数据展示。理解它们的工作原理,并熟练运用,将大大提高你的应用界面设计能力。在实际开发中,不断...
该app.asar适用于StartUML 5.1.0,解决了中日韩文本的自动换行问题,也解决了文本的排版问题,保留原始文本中的空格数量,不把多个空格压缩为一个。 另外,规避显示时空行被删除的技巧:在空行中加入一个空格,避免...
在网页设计和排版的过程中,表格(table)是常用于数据展示和布局控制的一种HTML元素。在使用table展示内容时,经常会出现内容过长超出了单元格(td)的宽度,导致无法完整展示全部内容的情况。传统的table布局常常...
Android中多行文本末尾添加图片排版问题的解决方法需要理解TextView的绘制机制和SpannableString的使用,使用ImageSpan和SpannableString可以将图片放置在最后一行,并使用计算每一行能够容纳的字符个数来解决换行...