代码之家  ›  专栏  ›  技术社区  ›  Guillaume Ebert

微调器自定义下拉视图怪异行为

  •  0
  • Guillaume Ebert  · 技术社区  · 6 年前

    在微调器中,我放置了以下自定义下拉视图

    <android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <ImageView
        android:id="@+id/imageView_allowance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="@+id/tv_allowance"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/tv_allowance"
        app:srcCompat="@drawable/ic_local_dining_black_24dp" />
    
    <TextView
        android:id="@+id/tv_allowance"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="TextView"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/imageView_allowance"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="Repas du midi" />
    

    并制作了如下自定义适配器:

    class SpinnerAllowanceAdapter extends ArrayAdapter<String> {
    
        SpinnerAllowanceAdapter(@NonNull Context context, int resource, int textViewResourceId, @NonNull String[] objects) {
            super(context, resource, textViewResourceId, objects);
        }
    
        @Override
        public boolean isEnabled(int position) {
            return position != 0;
        }
    
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View view = super.getDropDownView(position, convertView, parent);
    
            TextView tv = view.findViewById(R.id.tv_allowance);
            ImageView iv = view.findViewById(R.id.imageView_allowance);
    
            if (position == 0) {
                // Set the hint text color gray
                tv.setTextColor(Color.GRAY);
            } else {
                iv.setVisibility(View.VISIBLE);
                tv.setTextColor(Color.BLACK);
                iv.setImageResource(getAllowanceIcon(position));
            }
            return view;
        }
    
    
    
        private int getAllowanceIcon(int position){
            int drawableId;
    
            //image selection
    
            return drawableId;
        }
    }
    

    当没有选择任何项目时,它会正常工作。但当用户从微调器中选择一个项目时,该项目的图像视图将消失在下拉视图中。

    drop down view when no items have been selected by the user

    Drop down view, image dispared on item selected

    始终激活图像视图是我的代码中的正常行为还是缺少部分?

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Navneet Krishna    6 年前

    去除 android:visibility="gone" 像这样从imageview

    <ImageView
    android:id="@+id/imageView_allowance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="8dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/tv_allowance"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/tv_allowance"
    app:srcCompat="@drawable/ic_local_dining_black_24dp" />