背景 很多时候,我们需要将TextView的字体自动适应给定的边界。 问题 可悲的是,即使有许multithreading和post(和build议的解决scheme)在谈论这个问题(例如这里 , 这里和这里 ),但其中没有一个能够很好地工作。 这就是为什么,我决定testing他们每一个,直到我find真正的交易。 我认为这样的textView的要求应该是: 应该允许使用任何字体,字体,样式和字符集。 应该处理宽度和高度 除非由于限制,我们已经给予它(例如:太长的文本,太小的可用大小),除非文本不适合,否则不要截断。 但是,如果我们愿意的话,我们可以请求横向/纵向滚动条,只是针对这些情况。 应该允许多线或单线。 在多线的情况下,允许最大和最小线。 计算速度不宜太慢。 使用循环find最佳尺寸? 至less优化它,不要每次增加1次采样。 在多行的情况下,应该允许selectresize或使用更多的行,和/或允许使用“\ n”字符自己select行。 我试过了 我已经尝试了很多样本(包括那些链接,我已经写了),我也试图修改它们来处理这些案例,我已经提到过,但是没有一个真正起作用。 我做了一个示例项目,使我可以直观地看到TextView是否自动适配。 目前,我的示例项目只是随机化文本(英文字母加数字)和textView的大小,并让它保持单行,但即使这样做不适用于我尝试过的任何示例。 这里的代码( 这里也可以): 文件res/layout/activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Button" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/button1" android:layout_alignParentLeft="true" android:background="#ffff0000" android:layout_alignParentRight="true" android:id="@+id/container" android:layout_alignParentTop="true" /> </RelativeLayout> 文件src/…/MainActivity.java public class […]
我的strings.xml有一些固定的string,如下所示: <resources> <string name="somestring"> <B>Title</B><BR/> Content </string> </resources> 在我的布局中,我有一个TextView ,我想用html格式的string填充。 <TextView android:id="@+id/formattedtext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/htmlstring"/> 如果我这样做, formattedtext的内容只是somestring的内容剥离任何html标签,因此没有格式化。 我知道有可能以编程方式设置格式化文本 .setText(Html.fromHtml(somestring)); 因为我在我的程序的其他部分按照预期工作。 为了调用这个函数,我需要一个Activity ,但是目前我的布局只是一个简单的静态的简单的XML视图,我宁愿这样做,为了把我从创buildActivity的开销中解救出来,设置一些文本。 我可以忽略明显的东西吗? 这是不可能的吗? 任何帮助或解决方法欢迎! 编辑:只是尝试了一些事情,似乎在HTML中的HTML格式有一些限制: 标签必须写成小写 这里提到的一些标签不起作用,例如<br/>可以用\n代替)
我试图使用字幕,而不是在这里工作是我的代码,请让我知道哪里会出错 <TextView android:text="lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00 | lunch 20.00 | Dinner 60.00 | Travel 60.00 | Doctor 5000.00" android:id="@+id/TextView02" android:layout_width="200dip" android:layout_height="wrap_content" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee" android:singleLine="true" android:focusable="true" android:inputType="text" android:maxLines="1"> </TextView> 我正在使用Android SDK 2.0.1
我有文字“ Android是一个软件堆栈 ”。 在这个文本中,我想设置“ 堆栈 ”文本是可点击的。 从某种意义上说,如果你点击它将被redirect到一个新的活动(不在浏览器中)。 我试过,但我没有得到。
你如何得到一个TextView的文本是alignment的(文本在左侧和右侧齐平)? 我在这里find了一个可能的解决scheme,但是它不起作用(即使你把vertical-center改成center_vertical等等)。
我目前正在像这样在TextView中呈现HTMLinput: tv.setText(Html.fromHtml("<a href='test'>test</a>")); 所显示的HTML是通过外部资源提供给我的,所以我不能按照我的意思去改变,但是我可以用一些正则expression式来篡改HTML,把href的值改成别的东西。 我想要的是能够直接从应用程序中处理链接点击,而不是让链接打开一个浏览器窗口。 这完全可以实现吗? 我猜测有可能将href-value的协议设置为“myApp://”,然后注册一些让我的应用程序处理该协议的东西。 如果这确实是最好的方法,我想知道这是怎么做的,但我希望有一个更简单的方法来说,“当在这个文本框中点击链接,我想提出一个事件,接收链接的href值作为input参数“
有什么办法可以在android中调整文本视图中的文本大小,以适应它占据的空间? 例如,我正在使用TableLayout并添加几个TextView的每一行。 由于我不希望TextView包装文本,我宁愿看到它降低了内容的字体大小。 有任何想法吗? 我已经尝试了measureText ,但是因为我不知道列的大小,所以使用起来似乎很麻烦。 这是我想要改变字体大小的代码 TableRow row = new TableRow(this); for (int i=0; i < ColumnNames.length; i++) { TextView textColumn = new TextView(this); textColumn.setText(ColumnNames[i]); textColumn.setPadding(0, 0, 1, 0); textColumn.setTextColor(getResources().getColor(R.drawable.text_default)); row.addView(textColumn, new TableRow.LayoutParams()); } table.addView(row, new TableLayout.LayoutParams());
我在textview中显示文本,看起来太长,不适合一个屏幕。 我需要使我的TextView滚动。 我怎样才能做到这一点? 这里是代码: final TextView tv = new TextView(this); tv.setBackgroundResource(R.drawable.splash); tv.setTypeface(face); tv.setTextSize(18); tv.setTextColor(R.color.BROWN); tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL); tv.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent e) { Random r = new Random(); int i = r.nextInt(101); if (e.getAction() == e.ACTION_DOWN) { tv.setText(tips[i]); tv.setBackgroundResource(R.drawable.inner); } return true; } }); setContentView(tv);
是否有可能为TextView中的不同部分文本设置多个样式? 例如,我正在设置文本如下: tv.setText(line1 + "\n" + line2 + "\n" + word1 + "\t" + word2 + "\t" + word3); 是否有可能为每个文本元素有不同的风格? 例如,line1粗体,word1斜体等 开发者指南的常见任务和如何在Android中执行这些任务包括select,突出显示或设置部分文本样式 : // Get our EditText object. EditText vw = (EditText)findViewById(R.id.text); // Set the EditText's text. vw.setText("Italic, highlighted, bold."); // If this were just a TextView, we could do: // vw.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE); […]
我正在寻找一个最佳的方式来调整在TextView包装文本,以便它将适合其getHeight和getWidth范围内。 我不是简单地寻找一种方式来包装文本 – 我想确保它包装,并足够小,完全适合在屏幕上。 我在StackOverflow上看到了一些需要自动resize的例子,但是它们或者是非常特殊的黑客解决scheme,没有解决scheme,或者是recursion地TextView直到它足够小(这是内存激烈和强制用户每次recursion观看文本缩小步骤)。 但是我确定有人在那里find了一个不涉及我所做事情的好方法:编写几个沉重的例程来分析和测量文本,调整文本的大小,并重复,直到find适当的小尺寸。 TextView使用哪些例程来包装文本? 难道不能以某种方式来预测文字是否足够小? tl; dr :是否有一个最佳实践的方式来自动resize的TextView适合,包装,在其getHeight和getWidth范围?