我在使用ListView中的TextView时遇到问题,其中TextView错误地破坏了这行。
为了说明问题,我要显示以下文字:
"12345678901234567 ="
"12345678901 ="
"12345678901234567 *"
我使用的xml(TextView)如下: -
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textAlignment="gravity"
android:layout_gravity="end"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
结果显示如下:
123456789
01234567
=
12345678901=
123456789
01234567
*
显然我不希望“=”和“*”在一个单独的行上。我有 尝试了几十种不同的xml变体而没有达到我想要的效果。
测试的仿真器是:
Nexus 6 API 23:5556
Nexus6p API 23:5556
MotoG3 Android 6
使用23.0.3编译为Android 6
使用以下xml(EditText),我得到了所需的结果:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textAlignment="gravity"
android:layout_gravity="end"
android:textAppearance="?android:attr/textAppearanceLarge"
android:editable="false">
</EditText>
正确的结果如下:
12345678901234
567 =
12345678901 =
12345678901234
567 *
虽然我可以使用EditText,但显示不应该是可编辑的 我相信TextView应该可行。另外,“android:editable” 已被弃用。
有人读这篇文章可以告诉我如何获取TextView 按要求工作,或者如何使用EditText 一个不推荐的功能,并达到预期的效果?
.........添加到问题----------
用于在测试程序中创建ListView的代码如下: -
private void createLayout() {
RelativeLayout wRelLayout = new RelativeLayout(this);
wRelLayout.setBackgroundColor(Color.DKGRAY);
RelativeLayout.LayoutParams jLayParams = new RelativeLayout.LayoutParams(500, 700);
setContentView(wRelLayout, jLayParams);
ArrayList<String> alCalcLines = new ArrayList();
ListView lvCalcLines = new ListView(this);
lvCalcLines.setX(10);
lvCalcLines.setY(10);
lvCalcLines.setBackgroundColor(Color.WHITE);
lvCalcLines.setPadding(10, 10, 10, 10);
lvCalcLines.setAdapter(new ArrayAdapter<>(
this, R.layout.text_view_1, alCalcLines)); // xml
jLayParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
wRelLayout.addView(lvCalcLines, jLayParams);
alCalcLines.add("12345678901234567 =");
alCalcLines.add("12345678901 =");
alCalcLines.add("12345678901234567 *");
}
答案 0 :(得分:0)
将此添加到您的编辑文字XML中,对我有用。
<EditText
android:clickable="false"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false"/>
答案 1 :(得分:0)
在Textview或edittext
中尝试这些
txt_view.setTextDirection(View.TEXT_DIRECTION_RTL);
或
txt_view.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);
同样在android:supportsRtl =&#34; true&#34;到应用程序
在xml中
android:textDirection="rtl"
将重力设置为右
答案 2 :(得分:0)
如果你不想要一个单词(在你的情况下&#34; =&#34;是单词,因为它用空格分隔)不能转移到下一行,你可以使用不间断的空间。
它在Android中为\u00A0
。所以你的String看起来像这样:
"12345678901234567\u00A0="
"12345678901\u00A0="
"12345678901234567\u00A0*"
答案 3 :(得分:-1)
在textview行
中添加[android:SingleLine =&#34; true&#34;]