android - 如何制作微调器提示多行?
问题描述
我有一个微调器,它允许我不显示列表中的第一项,但我可以设置我的自定义提示。但是,只要提示文本跨越多行,它就会在视图边界处被截断。如何使微调器提示扩展以容纳更多文本?
我尝试将传递给适配器的视图修改为具有多行并在最后设置为椭圆,但没有任何效果。
这是我的代码:
languagesSpinner.setAdapter(new ArrayAdapter<>(EditProfileNationalityActivity.this, R.layout.no_default_spinner_item, new String[] {""}));
if(data.length>0) {
String countries = spokenLanguages.toString().substring(0, spokenLanguages.toString().length() - 2);
languagesSpinner.setPrompt(countries);
} else {
Log.e("setting prompt to default");
languagesSpinner.setPrompt("Please select languages");
}
这是xml文件:
<?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="center_vertical"
android:layout_gravity="center_vertical"
android:textColor="@android:color/black"
android:textSize="18sp"
android:ellipsize="end"
android:lines="2"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="1dp"
android:paddingRight="1dp"
android:background="?android:attr/activatedBackgroundIndicator" />
根据请求,spinner 的 xml 定义如下:
<com.package.views.NoDefaultSpinner
android:id="@+id/registration_stage_4_country_languages"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:clickable="false" />
NoDefaultSpinner.java 可以在这里找到:https ://github.com/geftimov/android-components/blob/master/components/src/main/java/com/eftimoff/components/views/spinners/nodefault/NoDefaultSpinner.java
我已将其修改为在 SpinnerProxy 中有一个自定义 getView() 方法,如下所示:
if (position < 0) {
if (layoutResource == -1) {
layoutResource = R.layout.no_default_spinner_item;
}
final TextView v =
(TextView) ((LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE)).inflate(
layoutResource, parent, false);
v.setText(getPrompt());
v.setPadding(0, 5, 0, 5);
return v;
}
return obj.getView(position, convertView, parent);
}
解决方案
我编辑了你的源代码:
adapter = new ArrayAdapter<>(EditProfileNationalityActivity.this, R.layout.no_default_spinner_item, new String[] {""});
adapter.setDropDownViewResource(R.layout.no_default_spinner_item);
languagesSpinner.setAdapter(adapter);
推荐阅读
- io - 如果我使用 libaio + fsync() 会怎样?
- c++ - 针对 TensorFlow C++ API 构建的 Bazel 目标不执行工厂注册函数
- image - 使用 Postman 问题上传 Strapi 图像
- c++ - enable_if 没有在构造函数中触发?
- git - 如何让 Cognito UserPool 用户可以访问 AWS CodeCommit 存储库?
- javascript - 使文本加粗会出错,有时它会打开和关闭
- rust - 为什么我可以在 Rust 中从向量末尾开始切片?
- angular - 成功 callbackId 中的错误:IonicDeeplinkPlugin297951451:TypeError:route.split 不是函数
- scala - 不同参数的辅助构造函数
- angular - 导入后导出的共享模块在角度 10 中无法识别