我有一个情况,那里有两个领域。 Field1和Field2 。 当Field1改变时,我想要做的只是空的Field2 ,反之亦然。 所以最后只有一个领域有内容。 Field1 = (EditText)findViewById(R.id.field1); Field2 = (EditText)findViewById(R.id.field2); Field1.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { Field2.setText(""); } }); Field2.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) {} public […]
对我的代码运行新的Lint工具。 它提出了很多很好的build议,但是这个我不明白。 这个标签和它的孩子可以用一个和一个复合可绘制来replace 问题:检查当前节点是否可以由使用复合绘图的TextViewreplace。 包含ImageView和TextView的LinearLayout可以更有效地作为复合drawable进行处理 这是我的布局 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_centerInParent="true"> <ImageView android:id="@+id/upImage" android:layout_width="20dp" android:layout_height="20dp" android:layout_gravity="center_vertical" android:scaleType="centerInside" android:src="@drawable/up_count_big"> </ImageView> <TextView android:id="@+id/LikeCount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="2dp" android:layout_marginBottom="1dp" android:textColor="@color/gray" android:textSize="16sp" android:layout_gravity="center_vertical"> </TextView> </LinearLayout> 有人可以提供一个具体的例子来说明如何在这种情况下制作一个复合绘制?
我有一个textView里面有一个数字(variables)和一个string ,我怎么能给一个比string大一号? 代码: TextView size = (TextView)convertView.findViewById(R.id.privarea_list_size); if (ls.numProducts != null) { size.setText(ls.numProducts + " " + mContext.getString(R.string.products)); } 我想ls.numproducts有一个不同于其他文本的大小。 怎么做?
背景 TextView总是有RTL(从右到左)语言的问题。 由于我只知道如何阅读希伯来文(除了英文),所以我会谈论它的问题: 文本alignment(我不是在说重力)。 作为一种RTL语言,希伯来语是从右向左(与英文相反)。 为了展示它是多么令人讨厌,想象一下,不要展示“Hello world”。 你通常会得到“你好世界”。 如果只有一个句子,可以很容易地解决这个问题,但是如果有多个标点符号,这个问题就会变得更加困难。 元音位置。 希伯来语不需要元音以阅读文本,但是有时在没有元音的情况下阅读是非常困难的(尤其是圣经)。 对于元音来说,希伯来文有所谓的“NIKUD”,实际上就像字母里的圆点。 在Android的问题是,他们通常位于错误的位置。 为了展示它是多么令人讨厌,想象一下,不要展示“Hello world”。 你通常会得到“.eHlol owrld”。 即使你试图解决这个问题(把元音总是一个字符放在当前字符之后),这个字母中的位置是不正确的(假设“你好”中的“e”会像“H”例如)。 只有在4.2版本( 在这里阅读“Native RTL支持”),Google已经修复了所有希伯来语相关的问题(或者至less似乎是这样)。 问题 希伯来语的问题已经导致每个以色列航空公司和每个定制ROM制造商都有自己的解决scheme来解决不同的问题,这使得实际上不可能在4.2版本的设备上处理RTL文本。 如果文本包含希伯来文和英文字母,事情会变得更加令人沮丧。 我试过了 我已经阅读了很多关于这些问题的网站,我已经尝试了很多种解决scheme,没有一个能够解决所有设备上的问题: 有些人build议把字符'\ u200F'(或'\ u202D')放在文本的结尾/开始/结尾处。 有人build议使用Html.fromHtml()方法,并在那里放些特别的东西。 有人甚至build议使用WebView来代替(也可以使用WebSettings.setDefaultTextEncodingName() )。 这个问题 这个问题有没有确切的解决办法? 我认为最好的事情是,因为Android 4.2解决了这个问题,Android是开源的,我们应该把它的TextView导入到我们可以使用的库中,但是Google还没有提供这样的库。
我正在为Android编写一个简单的文本/电子书阅读器,所以我使用了TextView来向用户显示HTML格式的文本,所以他们可以通过来回浏览页面中的文本。 但我的问题是,我不能在Android中分页。 我不能(或者我不知道如何)从断行和分页algorithm中得到适当的反馈,在这些algorithm中, TextView用来将文本分解成行和页面。 因此,我无法理解内容在实际显示中的结束位置,以便我从下一页的剩余内容继续。 我想find办法来克服这个问题。 如果我知道屏幕上画的最后一个字是什么,我可以很容易地把足够的字符填满一个屏幕,并且知道实际的绘画完成的地方,我可以继续下一页。 这可能吗? 怎么样? 类似的问题已经在StackOverflow上多次提出,但没有提供令人满意的答案。 这些只是其中的几个: 如何在Android中将长文本分页成页面? 在Android的电子书阅读器分页问题 根据呈现的文本大小分页文本 有一个答案,似乎工作,但速度缓慢。 它添加字符和行,直到页面被填充。 我不认为这是一个很好的方法来做页面打破: 如何在Android中将样式文本分解成页面? 而不是这个问题,恰巧PageTurner电子书阅读器做它大部分是正确的,虽然它在某种程度上是缓慢的。 https://github.com/nightwhistler/pageturner PS:我不仅限于TextView,而且我知道换行和分页algorithm可能相当复杂( 如在TeX中 ),所以我不是在寻找最佳答案,而是一个相当快速的解决scheme,可以被用户。 更新:这似乎是得到正确答案的好开始: 有没有办法检索TextView的可见行数或范围? 答案:完成文字布局后,可以找出可见的文字: ViewTreeObserver vto = txtViewEx.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ViewTreeObserver obs = txtViewEx.getViewTreeObserver(); obs.removeOnGlobalLayoutListener(this); height = txtViewEx.getHeight(); scrollY = txtViewEx.getScrollY(); Layout layout = txtViewEx.getLayout(); firstVisibleLineNumber = […]
我使用Paint.getTextBounds()来测量文本,因为我有兴趣获取要呈现的文本的高度和宽度。 但是,呈现的实际文本总是比由.width()填充的Rect信息的.width()宽一些。 令我惊讶的是,我testing了.measureText() ,发现它返回一个不同的(更高的)值。 我试了一下,发现它是正确的。 为什么他们报告不同的宽度? 我怎样才能正确地获得高度和宽度? 我的意思是,我可以使用.measureText() ,但是我不知道是否应该信任由.height()返回的getTextBounds() 。 根据要求,这里是最小的代码来重现问题: final String someText = "Hello. I believe I'm some text!"; Paint p = new Paint(); Rect bounds = new Rect(); for (float f = 10; f < 40; f += 1f) { p.setTextSize(f); p.getTextBounds(someText, 0, someText.length(), bounds); Log.d("Test", String.format( "Size %f, measureText %f, getTextBounds […]
我想知道是否有一种方法来处理用户在EditText键入时按Enter键 ,就像onSubmit HTML事件。 还想知道是否有一种方法来操纵虚拟键盘,使“完成”button被标记为别的东西(例如“Go”),并在单击时执行某个操作(又如onSubmit)。
我有一个TextView,我想要在其顶部和底部边框添加一个黑色边框。 我试着向TextView添加android:drawableTop和android:drawableBottom ,但是这只会导致整个视图变黑。 <TextView android:background="@android:color/green" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawableTop="@android:color/black" android:drawableBottom="@android:color/black" android:text="la la la" /> 有没有一种方法可以轻松地添加一个顶部和底部的边界到一个视图(特别是一个TextView)在Android?
有没有可能在TextView中设置文本的范围的颜色? 我想做类似于Twitter应用程序的东西,其中一部分文字是蓝色的。 见下图:
所以我想在Android中更改android:fontFamily ,但在Android中没有看到任何预定义的字体。 我如何select一个预定义的? 我并不需要定义自己的TypeFace,但是我需要的是与现在所显示的不同的东西。 <TextView android:id="@+id/HeaderText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="52dp" android:gravity="center" android:text="CallerBlocker" android:textSize="40dp" android:fontFamily="Arial" /> 看来我做了什么不会真的工作! 顺便说一句android:fontFamily="Arial"是一个愚蠢的尝试!