android - 如何为 Spinner DropDown 设置圆角?
问题描述
我需要自定义微调器 DropDown。它应该是圆角。现在看起来像这样:
此解决方案不起作用。
布局:
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/messageSubject"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textAppearance="@style/Text.Default.Normal"
android:background="@color/transparent"
android:minHeight="@dimen/grid_6_25"
android:layout_marginTop="@dimen/grid_1_75"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/supportQuestion" />
分段:
class SupportFragment : Fragment(R.layout.fragment_support) {
private val viewBinding by viewBinding<FragmentSupportBinding>()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initView()
}
private fun initView() {
val adapter = ArrayAdapter.createFromResource(
requireContext(),
R.array.message_subject,
R.layout.spinner_selected
).also { adapter ->
adapter.setDropDownViewResource(R.layout.spinner_dropdown)
}
viewBinding.messageSubject.adapter = NothingSelectedSpinnerAdapter(requireContext(), adapter, R.layout.spinner_hint)
}
companion object {
fun newInstance() = SupportFragment()
}
}
解决方案
创建圆形背景spinnerbg.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#3B3B3B" /> <corners android:radius="@dimen/_4sdp" /> </shape>
将其添加到样式。
<style name="SpinnerTheme" parent="android:Widget.Material.Spinner.Underlined"> <item name="android:background">@drawable/spinnerbg </item> <item name="android:popupBackground">@drawable/spinnerbg </item> <item name="android:textAlignment">textStart</item> </style>
使用样式
<androidx.appcompat.widget.AppCompatSpinner android:id="@+id/spinner_season" style="@style/SpinnerTheme" android:layout_width="@dimen/_100sdp" android:layout_height="@dimen/_30sdp" android:layout_alignParentEnd="true" android:layout_gravity="end" android:layout_marginEnd="@dimen/_10sdp" android:spinnerMode="dropdown" />
如果需要,在 java 文件中添加自定义布局。
ArrayAdapter aa = new ArrayAdapter(context, R.layout.item_spinner, R.id.textview, season1);
aa.setDropDownViewResource(R.layout.item_spinner_dropdown);
推荐阅读
- elasticsearch - Can't curl the response at port 9200,but can ping directly
- angular - 如何在角度 2 中隐藏或删除 SVG 元素的标题属性
- css - 如何自定义现有的 PrimeFaces 主题?
- web-applications - Web 应用程序产品在浏览器上显示“不安全”警告
- java - 无法在初始化为超类的 ArrayList 中调用派生类的方法
- azure - 如何始终如一地成功地将我的 Azure Service Fabric 应用程序部署到本地集群?
- postgresql - ST_ApproximateMedialAxis 在最终近似值上留下骨架线
- php - 在 Laravel 中的视图上渲染数组集合中的单个项目
- java - 如何在 Vaadin 画布上单击提交按钮时填充文本?
- networking - 贝叶斯分析应用对安全问题的不确定性