参见英文答案 > Spinner does not wrap text — is this an Android bug? 14个
我在一个单独的行的表布局视图中有两个微调器和EditText控件.微调器中填充了数据.我的问题是填充到微调器中的数据(文本)太长而不适合屏幕大小.因此,旋转器被迫拉伸不必要地拉伸另一排上的其他控件.
对于我来说,在旋转器中显示文本是必须的.因此,使用省略号不是一种选择.如果有可能我怎样才能在纺纱机上包装冗长的文字?
解决方法:
步骤1.带有包装文本的TextVIEw
首先要强制简单的TextVIEw来包装文本.这很简单:
<TextVIEw androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:singleline="false" androID:text="very long text that will be wrapped to next line" />
请注意这里的singleline属性.
第2步.自定义布局
现在我们应该以某种方式在Spinner使用的TextVIEw中将singleline属性设置为false,以显示列表中的项目.
在您的代码中,您可能会在其中创建适配器以将其与Spinner一起使用:
this.mAdapter = ArrayAdapter.createFromresource(this, R.array.Planets, androID.R.layout.simple_spinner_dropdown_item);
我们的想法是将android.R.layout.simple_spinner_dropdown_item布局复制到您的项目中.然后通过在CheckedTextVIEw中将singleline属性设置为false来修改它:
为此,使用下一个代码将文件添加到名为multiline_spinner_dropdown_item.xml的res / layout文件夹中:
<CheckedTextVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@androID:ID/text1" androID:singleline="false" androID:layout_wIDth="match_parent" androID:layout_height="?androID:attr/ListPreferredItemHeight" androID:ellipsize="marquee" />
请注意,此文件与android.R.layout.simple_spinner_dropdown_item布局相同,但现在将singleline设置为false.
步骤3.使用自定义布局创建适配器
修改您的适配器创建代码:
this.mAdapter = ArrayAdapter.createFromresource(this, R.array.Planets, R.layout.multiline_spinner_dropdown_item);
以下是AndroID SDK中经过修改的SpinnerActivity示例的屏幕截图:
总结以上是内存溢出为你收集整理的android – 如何在微调器中包装冗长的文本?全部内容,希望文章能够帮你解决android – 如何在微调器中包装冗长的文本?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)