我有一个Android微调器,当我列表中的项目少于一个时,我想禁用它。我的意思是我想要显示标题,但是当我点击它时我不希望列表下拉。
我已尝试过isClickable = false,并且isEnabled = false就像许多帖子一样,但我仍然无法让它工作。
我成功获得了微调器下拉图标,但我仍然可以点击文本并获取列表。
class CustomSpinnerAdapter(private val ctx: Context, val locations: List<Location>) : ArrayAdapter<Location>(ctx, R.layout.list_item_spinner_view) {
override fun isEmpty() = locations.isEmpty()
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val context = parent.context
val inflater = LayoutInflater.from(context)
var view = convertView
if (view == null)
view = inflater.inflate(R.layout.list_item_spinner_view, parent, false)
view!!.location_spinner_name.text = locations[position].name
if (count < 2) {
view.location_spinner.visibility = View.GONE
view.better_name.isEnabled = false
view.better_name.isClickable = false
}
view.location_spinner_name.typeface = Typeface.createFromAsset(ctx.assets, ctx.getString(R.string.font_bold))
return view
}
以下是我的标题视图
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/better_name">
<TextView
android:id="@+id/location_spinner_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
style="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"/>
<com.ge.cbyge.view.TintableImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_arrow_drop_down_black"
android:tint="@color/medium_gray"
android:paddingTop="@dimen/activity_home_spinner_dropdown_padding_top"/>
</LinearLayout>
答案 0 :(得分:0)
希望这会有所帮助。这不是您的应用程序的重写,但可能是您可以集成的想法:
您可以像这样创建自己的Spinner类:
class MySpinner extends AppCompatSpinner {
public MySpinner(Context context) {
super(context);
}
public MySpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean performClick() {
if ( getCount() == 0 ) {
return true; // we do nothing because adapter contents = 0
}
else {
return super.performClick(); // we proceed as normal
}
}
}
然后将您的XML引用从“Spinner”更改为“[yourPackageName] .MySpinner”