Anton Pankratov Asked:2020-10-07 22:30:58 +0000 UTC2020-10-07 22:30:58 +0000 UTC 2020-10-07 22:30:58 +0000 UTC 如何制作自定义 Spinner?(里面的照片) 772 我设法使传出列表出现在初始行的顶部,但我需要它低于它(如图所示)。这个怎么做?以及如何将箭头设置为向右,这样当您单击微调器时,它会动画地向下转动? android 1 个回答 Voted Best Answer Andrew 2020-10-07T22:47:39Z2020-10-07T22:47:39Z 要制作自定义微调器,您有两种选择:使用库或自己制作。这是一个带有libs的库或页面。第二种选择是自己制作微调器,这意味着为微调器列表项创建标记并为整个微调器创建样式。第二个选项更耗时,但最终你会得到一个非常可定制的视图元素。选择什么取决于你。 更新 我们做标记(在这种情况下,我的,但你可以做任何你喜欢的): <TextView android:id="@+id/title" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginStart="5dp" android:layout_weight="17" android:ellipsize="end" android:gravity="start" android:maxLines="1" android:singleLine="true" android:textAlignment="gravity" android:textColor="@color/black" app:autoSizeTextType="uniform" /> <TextView android:id="@+id/number" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="5dp" android:layout_weight="3" android:ellipsize="end" android:maxLines="1" android:textAlignment="center" android:textColor="@color/black" app:autoSizeTextType="uniform" /> 接下来我们制作一个适配器: class SpinnerAdapter(var ctx: Context, var title: List<String>,var count:List<Int>): BaseAdapter() { override fun getView(i: Int, p1: View?, p2: ViewGroup?): View { val inflater = LayoutInflater.from(ctx) val view1 = inflater.inflate(R.layout.spinner_item, null) as View val titles = view1.findViewById(R.id.title) as TextView val counts = view1.findViewById(R.id.number) as TextView titles.text = title[i] counts.text = count[i].toString() return view1 } override fun getItem(p0: Int): Any? { return null } override fun getItemId(p0: Int): Long { return 0 } override fun getCount(): Int { return title.size } } 将您的数据发送到此适配器以填写字段。 我们将上面所做的一切连接到活动中的一个堆(片段)中: val recordStatuses = view.findViewById(R.id.recordStatus) as Spinner val spinnerAdapter = SpinnerAdapter(context!!, statuses, statusCounts) recordStatuses.adapter = spinnerAdapter recordStatuses.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) { } override fun onNothingSelected(parent: AdapterView<*>) { } } 我认为重点很清楚:)
要制作自定义微调器,您有两种选择:使用库或自己制作。这是一个带有libs的库或页面。第二种选择是自己制作微调器,这意味着为微调器列表项创建标记并为整个微调器创建样式。第二个选项更耗时,但最终你会得到一个非常可定制的视图元素。选择什么取决于你。
更新
我们做标记(在这种情况下,我的,但你可以做任何你喜欢的):
接下来我们制作一个适配器:
}
将您的数据发送到此适配器以填写字段。
我们将上面所做的一切连接到活动中的一个堆(片段)中:
我认为重点很清楚:)