Android编程:求助两个TextView行数c 同步编程问题

编程输入数据行数问题
[问题点数:30分,结帖人weroiuuyy]
编程输入数据行数问题
[问题点数:30分,结帖人weroiuuyy]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。服务器返回的链接如下:亲爱的用户您好,您的申请已通过我们的审核环节,您现在已经正式加入您申请的"&a href='.cn/bbs/carclub-o--1.html' target='_blank'&功能测试区论坛----xin_net &/a&"车友会。相关规范请您查阅&a href='.cn/help/userhelp#62' target='_blank'&《车友会管理规范》&/a&
TextView显示如下:
我的问题是, 如何点击带下划线的部分,获取链接地址? 我会根据链接地址来判断 1. 跳转到某个Activity
2. 用浏览器打开
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
import android.app.Aimport android.os.Bimport android.text.Himport android.text.Simport android.text.SpannableStringBimport android.text.method.LinkMovementMimport android.text.style.ClickableSimport android.text.style.URLSimport android.view.Vimport android.widget.TextV
public class ZZZ extends Activity {
// 这个布局里面只有一个文本
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zzz);
String s = "你是谁啊地方的法规风光好爱热人都大富豪挺好让他地方艾丝凡";
s = s.replaceAll("地方", "&a
href='地方'&" + "地方" + "&/a&");
s = s.replaceAll("风光", "&a
style=\"color:#ff0000;\"
href='风光'&"
+ "风光" + "&/a&");
Spannable sp1 = (Spannable) Html.fromHtml(s);
TextView tv = (TextView) this.findViewById(R.id.textView);
tv.setText(sp1);
tv.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = tv.getText();
if (text instanceof Spannable) {
int end = text.length();
// 其实就是得到sp1
Spannable sp = (Spannable) tv.getText();
// 得到其中所有的关键字的数组
URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
// 其中关键字的样式
SpannableStringBuilder style = new SpannableStringBuilder(text);
// 清楚掉所有的关键字标志
style.clearSpans();
for (URLSpan url : urls) {
// 将关键字数组中的文字添加到新生成的style中去
MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
style.setSpan(myURLSpan, sp.getSpanStart(url),
sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 将新生成的放置到TextView上
tv.setText(style);
* 继承于可点击的标签
* @author excuce
private static class MyURLSpan extends ClickableSpan {
private String mU
* @param url
可以点击的关键字,构造时传入的
MyURLSpan(String url) {
public void onClick(View widget) {
// TODO Auto-generated method stub
System.out.println(mUrl);
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (598) 次package com.api.android.GBAimport java.util.Vimport android.content.Cimport android.graphics.Cimport android.graphics.Cimport android.graphics.Pimport android.graphics.Paint.FontMimport android.util.AttributeSimport android.view.Vimport android.view.WindowMimport android.widget.LinearLimport android.widget.TextVpublic class TextField extends TextView { private Paint mPaint = Vector strVector = new Vector(); private int screenW private int screenH private int margin = 30; private int x = margin/2; private int y = 30; int mFontHeight = 0; public
int m_iTextH int lineCount=0; private WindowManager wm= private String mString="";
public TextField(Context context, AttributeSet set, String a) {
super(context,set);
wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
initString();
public TextField(Context context, AttributeSet set) {
super(context,set);
System.out.println("wm
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.alpha(0));
canvas.setViewport(screenWidth, screenWidth);
for (int i = 0, j = 0; i & lineC i++, j++) {
canvas.drawText((String) (strVector.elementAt(i)), x, y
+ mFontHeight * j, mPaint);
} } protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measuredHeight = measureHeight(m_iTextHeight);
int measuredWidth = measureWidth(widthMeasureSpec);
this.setMeasuredDimension(measuredWidth, measuredHeight);
System.out.println("measuredHeight "+measuredHeight);
this.setLayoutParams(new LinearLayout.LayoutParams(measuredWidth,
measuredHeight));
super.onMeasure(widthMeasureSpec, heightMeasureSpec); } private int measureHeight(int measureSpec) {
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
int result = m_iTextH
if (specMode == MeasureSpec.AT_MOST) {
result = specS
} else if (specMode == MeasureSpec.EXACTLY) {
result = specS
} public void initString() {
m_iTextHeight=2000;
mPaint = new Paint();
mPaint.setColor(Color.BLACK);
mPaint.setStrokeWidth(40);
mPaint.setTextSize(25);
mPaint.setAntiAlias(true);
FontMetrics fm = mPaint.getFontMetrics();
screenWidth = wm.getDefaultDisplay().getWidth()-
mFontHeight = (int) Math.ceil(fm.descent - fm.top) + 4;
int istart=0;
for (int i = 0; i & mString.length(); i++) {
ch = mString.charAt(i);
float[] widths = new float[1];
String srt = String.valueOf(ch);
mPaint.getTextWidths(srt, widths);
if (ch == '\n') {
lineCount++;
strVector.addElement(mString.substring(istart, i));
istart = i + 1;
w += (int) (Math.ceil(widths[0]));
if (w & screenWidth) {
lineCount++;
strVector.addElement(mString.substring(istart, i));
if (i == (mString.length() - 1)) {
lineCount++;
strVector.addElement(mString.substring(istart, mString.length()));
m_iTextHeight=(lineCount+2)*mFontHeight+2; } private int measureWidth(int measureSpec) {
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
int result = 500;
if (specMode == MeasureSpec.AT_MOST) {
result = specS
} else if (specMode == MeasureSpec.EXACTLY)
result = specS
} public void setText(CharSequence text, Context context) {
mString = text.toString();
wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
initString();
super.setText(text); }}今天做项目的时候遇到了个问题,就是当把一篇长文章在TextView进行显示的时候会发生自动换行的情况。当屏幕比较宽的时候这种现象不会有大影响,但是当屏幕比较窄的时候这种现象就很明显,看着很乱。为了解决这个问题,我查找了许多资料,其中有几篇比较有用的文章,帮助我解决了这个问题。&解决这个问题的思路是计算屏幕宽度:screenWidth、计算每个字符在屏幕中占得最小宽度, 并进行相加当大于屏幕宽度的时候加一行。显示的时候根据行数,把相同行数的字符打印在同一个Y坐标点钟,切换下一行的时候对Y坐标进行相应的相加即可。关键代码:&
public TextField(Context context, AttributeSet set, String a) {
super(context,set);
wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
initString();
public TextField(Context context, AttributeSet set) {
super(context,set);
System.out.println("wm
}第一个构造方法为了在Java中直接创建View对象并进行加载,第二个构造方法为为了在initString()方法里对我们需要做的字符串进行了解析,也就是根据屏幕宽度及字体大小,取得了各个字符的行数。&public void setText(CharSequence text, Context context) {mString = text.toString();wm=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);initString();super.setText(text);}在Java代码中对View加载字符串的时候需要再传递一个Context对象,方便获得WindowsManager对象。for (int i = 0, j = 0; i & lineC i++, j++) {canvas.drawText((String) (strVector.elementAt(i)), x, y+ mFontHeight * j, mPaint);}根据字符的行数打印相应的字符。&protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int measuredHeight = measureHeight(m_iTextHeight);int measuredWidth = measureWidth(widthMeasureSpec);this.setMeasuredDimension(measuredWidth, measuredHeight);System.out.println("measuredHeight "+measuredHeight);this.setLayoutParams(new LinearLayout.LayoutParams(measuredWidth,measuredHeight));super.onMeasure(widthMeasureSpec, heightMeasureSpec);}根据实际的文章的高度对自定义View进行高度的设置。&其中出现的问题:当我对这个View在Java中加载并进行显示的时候必须要调用setText方法,不知道为什么,应该在onDraw()方法中已经画出来了,但是如果不调用setText方法字不显示出来,希望有高手能解惑。&
解决TextView 自动换行。 - Android开发交流 - Android开发论坛 -...6条回复&-&发帖时间:&日TextView解决自动换行问题 - 下载频道 - CSDNandroid TextView解决自动换行问题,设置行数后超过用省略号... android TextView解决自动换行问题,设置行数后超过用省略号资源积分:2分 下载次数:62 资源类型:代码类 ...Android中的TextView的获取的字符串如何动态换行?比如..._百度知道2个回答 - 提问时间: 日假设从数据库中获取的字符串为s s = s.replace(&@&,&\n&).replace(&#&,&\n\n&); textView.setText(s);解决textView出现中文字符自动换行的方案_elegant_whyuan_新浪博客 解决textView出现中文字符自动换行的方案 ( 10:09:44) 转载▼ 标签: it textView中,如果有个中文的字符。则会出现自动换行。后面就空了一大片...Android解决TextView控件自动换行的问题 - YANS写博客Anroid中,当们要在要TextView中放置很多文字时,会造成文字自动换行,这样就界面就会非常的不好看,形成这种问题的原因是因为半角和全角混用造成的,于我们可以把半角转...Android TextView 自动换行问题 - 文忠专栏 - 博客频道 - CSDN 2)自定义View显示文本 上就有达人采用自定义View来解决这个问题,我做了... Android TextView 自动换行问题(24356) Android采用ListView实现数据列表显示(...androidtextview换行:请问在Android中Textview换行显示问题,您-...请问在Android中Textview换行显示问题,您如何解决? 如果只想单行显示,那么在你的属性中添加一句android:singleLine=自定义控件MultipleTextView(自动换行、自动补齐宽度的排列多个...【自动换行】自动换行开发,自动换行资源下载-CSDN 开源夏令营之foldcolumn工具及解决方案(三)表格列超长自动换行实现 摘要:参考:... 来源:下载 标签:android自动换行layout 该信息由 yhjsspz贡献 textView根据...EditText和TextView出现中文、英文等string串的排版问题 - Alex_...默认EditText和TextView自动换行。如果在string中出现了中文字符,排版出现意外,如图所示: 这是因为软盘默认的是半角输入,而字母与数字的占位与汉字不同,所以在默认...TextView 实现自动换行 - 百科教程_经验分享平台[上学吧经验... Android中TextView如何实现水平和垂直滚动 Android中TextView中内容不换行的解决... [图书] 现代汉语自动分析:Visual C 实现 [视频] android基本组件(TextView、...同android TextView 自动换行之后如果让每行的文本和图片都垂直...解决:sqlite数据库含有\n的值或者sax解析xml有\n的值付给TextView...遇到个问题,上也有人问 从sqlite数据库取含有\n的值付给TextView,显示结果却不会换行,而是将\n也原原本本的显示出来了。太奇怪了!那位老大解决过这种问题吗?...TextView、ExitText 过滤字符串中的换行符,以使文章自..._百度文库 TextView、ExitText 过滤字符串中的换行符,以使文章自动换行_计算机软件及应用_... 解决IE Firefox下 字符... 2页 免费 用CSS让英文文章自动换行... 3页 ...CustomCell自适应高度+UILabel自动换行+UITextView根据内容自动... // Customize the appearance of table view cells.- (UITableViewCell *)... UILabel 自动换行 CGSize titleBrandSizeForHeight = [titleBrand.text ...Android的TextView不能自动换行的问题 - 陈鹏C - 博客园在画布局的时候发现我的TextView不能自动换行,超出了屏幕也不换 TableLayout里... 加一个android:shrinkColumns 之后问题解决posted @
18:57 陈鹏C...Android中TextView中内容不换行的解决方法_Linux编程_Linux学院_... 那么在项目部署到运行Android x的设备上时TextView在文本超出其表示范围时不会自动换行其超出部分不会显示在屏幕上效果如下 Android中TextView中内容不换行的解决...iOS 问题:tableviewcell中有textview,textview在输入文字换行时...tableviewcell的高度也跟着动态改变高度,一定是在textview换行改变高度时tableview... 真机测试报这样的错怎么解决呀?*** Terminating app due to uncaught ...android上textview显示,出现没一行没满就换行的问题-CSDN论坛-...19条回复&-&发帖时间:&日关于android textview文字自动换行、排版的一些研究-Android开发...14条回复&-&发帖时间:&日MyLink 这是多个文本自动换行的textview的demo android 195万源...详细说明:这是多个文本自动换行的textview的demo-This is the demo multiple text wrapping textview 文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价...textview里第一行有个换行 如何去掉该换行可是下面的换行不处理 textview里第一行有个换行 如何去掉该换行可是下面的换行不处理,怎么实现咧?? textview第一行 换行 textview换行 Textview UITextview 发表于: ...Android TextView 文字换行的问题 - 开源中国社区 Android TextView textView.setText(&aaa\nbbb&);可以自动换行, 但是String s = &aaa\nbbb&; textView.setText(s); 就不能正常换行了,请问什么愿意如何...Android的有关EditText的能多行显示但无法禁止自动换行的Bug! - ... 使EditText或TextView 支持 多行显示,但是不自动换行,即能水平滚动较长的内容... 解决方案: 在JAVA代码中设置一次即可! .setHorizontallyScrolling(true); 参考...android ellipsize 解决textview自动换行 希望本文android ellipsize 解决textview自动换行对遇到这问题有同学有帮助! Tag android ellipsize,android ellipsize textview,ellipsize textview自动换行...安卓android 换行符(\n) 在TextView中显示不正常的问题 - 01云... 解决办法: 定义换行字符为“|”,然后在android代码中替换为换行符“\n” TextView mTextView = new TextView(this); mTextView.setText((currentQuestion...TextView 自动换行-Android开发问答-eoe 移动开发者论坛 - ...14条回复&-&发帖时间:&日解决安卓TextView异常换行,参差不齐等问题 - 推酷关于TextView异常换行,参差不齐问题分析:安卓TextView第二行开始(包括第二行),每行开头第一个字符不能为字母、数字、标点符号、以及特殊字符,因为它们都为半角...android 换行符(\n) 在TextView中显示不正常的问题 | 学步园
解决办法: 定义换行字符为“|”,然后在android代码中替换为换行符“\n”
TextView mTextView = new TextView(this);
mTextView.set...解决TextView排版自动换行问题 - Gobby.X的日志 - 易博客1条评论Android TextView换行问题 - 阿良的专栏 - 博客频道 - CSDN[]2)自定义View显示文本上就有达人采用自定义View来解决这个问题,我做了实验并... mCYTextView.SetText(text); } }运行结果如下:上一篇Android TextView自动换行...uitextview自动换行 - 我的异常 解决android textview自动换行问题 今天忽然发现android项目中的文字排版参差不齐的情况非常严重,不得不想办法解决一下。经过研究之后,终于找到了textview自动换行导致...Android使用TextView实现无下划线超链接 | 萝卜白菜的小站 关键字: Android, TextView, 超链接 【上一篇】解决MediaPlayer问题: [MP3... html unicode 垂直滚动 View 文件头 自动换行 动画 删除 Email 音频文件 异常...android TextView 垂直自动滚动字幕实现
-------------
新增文件夹...
新增文件夹
(多个标签用逗号分隔)
前段时间,在网上搜到一个帖子,textview 水平自动滚动字幕的实现,今日项目需要垂直滚动字幕。其实现原理和水品一样。都是重写textview的onDraw方法。
实现垂直自动滚动字幕需要2点需要注意
1.需要根据textview的宽度和字体的大小计算滚动字幕有多少行。实现这个功能,需要重新写两个方法:1.onMeasure,2.onDraw.因为需要获取textview的宽度,于是需要在onMeasure方法里面调用如下代码。具体方法如下:public VerticalScrollTextView extends TextView {
private float step =0f;
private Paint mP
private List&String& textList = new ArrayList&String&();
//分行保存textview的显示信息。
public VerticalScrollTextView(Context context, AttributeSet attrs) {
super(context, attrs);
public VerticalScrollTextView(Context context) {
super(context);
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = MeasureSpec.getSize(widthMeasureSpec);
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
if (widthMode != MeasureSpec.EXACTLY) {
throw new IllegalStateException("ScrollLayout only canmCurScreen run at EXACTLY mode!");
float length = 0;
if(text==null|text.length()==0){
//下面的代码是根据宽度和字体大小,来计算textview显示的行数。
textList.clear();
StringBuilder builder = new StringBuilder();
for(int i=0;i&text.length();i++){
Log.e("textviewscroll",""+i+text.charAt(i));
if(length&width){
builder.append(text.charAt(i));
length += mPaint.measureText(text.substring(i, i+1));
if(i==text.length()-1){
Log.e("textviewscroll",""+i+text.charAt(i));
textList.add(builder.toString());
textList.add(builder.toString().substring(0,builder.toString().length()-1));
builder.delete(0, builder.length()-1) ;
length= mPaint.measureText(text.substring(i, i+1));
//下面代码是利用上面计算的显示行数,将文字画在画布上,实时更新。
& && @Override
public void onDraw(Canvas canvas) {
for (int i = 0; i & textList.size(); i++) {
canvas.drawText(textList.get(i), 0, this.getHeight()+(i+1)*mPaint.getTextSize()-step, getPaint());
invalidate();
step = step+0.3f;
if (step &= this.getHeight()+textList.size()*mPaint.getTextSize()) {
} 还有一些扩展功能没有加,比方说滚动的速度设定,滚动多长时间就停止滚动。
转自:http://blog.csdn.net/fengyoujie/article/details/7296941
相关资讯  — 
相关文档  — 
发布时间: 18:55:49
同类热门经验
38786次浏览
106760次浏览
26158次浏览
68802次浏览
36097次浏览
OPEN-OPEN, all rights reserved.

我要回帖

更多关于 c 并行编程 的文章

 

随机推荐