【问题标题】:Change Android Spinner 1st item background color更改 Android Spinner 第一项背景颜色
【发布时间】:2020-10-22 17:34:31
【问题描述】:

我想更改微调器的第一个下拉菜单背景颜色。可能吗? 例如,我有 3 个项目菜单用于性别选择。 1) 选择您的性别 2) 男性 3) 女性。 我想在微调器下拉列表中显示这 3 个项目。我想将第一项的背景更改为浅蓝色,其他两项应为白色。有没有可能

【问题讨论】:

    标签: android android-spinner


    【解决方案1】:

    使用 spinner Adapter 怎么样?

    例如,

    ArrayList<String> testarray = new ArrayList<String>();
        testarray.add("item0");
        testarray.add("item1");
        testarray.add("item2");
        testarray.add("item3");
        ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, testarray) {
    
           @Override      
           public boolean isEnabled(int position) {
               return position != 1;                             
           }
    
           @Override                
           public boolean areAllItemsEnabled() {
               return false;
           }
    
           @Override
           public View getDropDownView(int position, View convertView, ViewGroup parent){
               View v = convertView;
               if (v == null) {
                   Context mContext = this.getContext();
                   LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                   v = vi.inflate(R.layout.row, null);
               }
    
               TextView tv = (TextView) v.findViewById(R.id.spinnerTarget);
               tv.setText(testarray.get(position));
    
               switch (position) {
                   case 0:
                       tv.setTextColor(Color.RED);  
                       break; 
                   case 1:
                       tv.setTextColor(Color.BLUE);
                       break;
                   default:
                       tv.setTextColor(Color.BLACK);
                       break;
               }
               return v;  
           }              
        };
    
        pSpinner.setAdapter(spinnerAdapter); 
    

    这是 simple_spinner_dropdown_item.xml 的行。

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinnerTarget"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="14pt" />
    

    示例代码更改文本颜色。所以你可以尝试改变背景颜色

    【讨论】:

      【解决方案2】:

      我为适配器创建了一个单独的类。在这里

      class GenderDropDownAdapter(
          private val mContext: Context,
          private val genderList: ArrayList<String>
      ) : ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_dropdown_item, genderList) {
      
          override fun areAllItemsEnabled(): Boolean {
              return false
          }
      
          override fun isEnabled(position: Int): Boolean {
              return position != 0
          }
      
          override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
              var customView = convertView
      
              if (customView == null) {
                  val mContext = this.context
                  val vi: LayoutInflater = mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
                  customView = vi.inflate(R.layout.item_gender_dropdown, null)
              }
      
              val genderTextView: TextView = customView?.findViewById<View>(R.id.gender_dropdown_text) as TextView
              genderTextView.text = genderList[position]
      
              if (position == 0) {
                  genderTextView.setBackgroundColor(mContext.resources.getColor(R.color.colorAccent))
                  genderTextView.setTextColor(mContext.resources.getColor(R.color.white))
              } else {
                  genderTextView.setTextColor(mContext.resources.getColor(R.color.black))
              }
      
              return customView
          }
      
      }
      

      并在我的活动中使用此适配器

      class PersonalDetailActivity : BaseActivity<AuthenticationViewModel>(), AdapterView.OnItemSelectedListener {
      
          private val genderList = arrayListOf(
              "Select Gender",
              "Male",
              "Female"
          )
      
          override fun getLayoutResource() = R.layout.activity_personal_detail
      
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
      
              val genderDropDownAdapter = GenderDropDownAdapter(baseContext, genderList)
      
              gender_spinner.adapter = genderDropDownAdapter
              gender_spinner.onItemSelectedListener = this
      
          }
      
          override fun onNothingSelected(parent: AdapterView<*>?) {}
      
          override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
              gender = when (position) {
                  0 -> null
                  1 -> "M"
                  else -> "F"
              }
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多