【问题标题】:Android Spinner dropdown view not transparentAndroid Spinner 下拉视图不透明
【发布时间】:2017-02-03 13:59:18
【问题描述】:

我正在使用自定义 SpinnerTextView。我将下拉布局背景设置为透明。但是当应用程序运行时,只有Spinner 是透明的。下拉视图显示白色。

图片:

ma​​in_activity.xml:

<Spinner
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:gravity="center"
        android:layout_below="@+id/phone"
        android:spinnerMode="dropdown"
        android:id="@+id/eventspinner"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
/>

spinner_dropdown_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    >

    <TextView
        android:id="@+id/eventText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textColor="#000000"
        android:layout_marginLeft="10dp"
        android:text="Text Here"
        android:background="@android:color/transparent"
        android:layout_centerVertical="true">
    </TextView>
    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginTop="14dp"
        android:layout_below="@+id/eventText"
        android:background="#90000000"></View>
</RelativeLayout>

CustomAdapter.java:

public class CustomAdapter extends ArrayAdapter<String> {
    public CustomAdapter(Context context, int resource, List objects) {
        super(context, resource, objects);
    }
    public View getCustomView(int position,View convertview,ViewGroup parent){
        LayoutInflater layoutInflater=getLayoutInflater();
        View view= layoutInflater.inflate(R.layout.spinner_dropdown_layout,parent,false);
        view.setBackgroundColor(Color.TRANSPARENT);
        TextView eventText=(TextView) view.findViewById(R.id.eventText);
        eventText.setText((CharSequence) spinnerData.get(position));
        return view;


    }
    @Override
    public View getDropDownView(int position, View convertView,
                                ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getCustomView(position, convertView, parent);
    }
}

MainActivity.java:

 spinnerData=new ArrayList();
            spinnerData.add("Select from below");
            spinnerData.add("Marriage");
            spinnerData.add("House Warming");
            eventSpinner=(Spinner) findViewById(R.id.eventspinner);
            eventSpinner.setAdapter(new CustomAdapter(this,R.layout.spinner_dropdown_layout,spinnerData));
            eventSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Snackbar.make(main_layout, (CharSequence) parent.getItemAtPosition(position),Snackbar.LENGTH_SHORT).show();
                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                Snackbar.make(main_layout,"Noting selected",Snackbar.LENGTH_SHORT).show();
                }
            });

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#ffffff</color>
</resources>

【问题讨论】:

  • 也添加你的颜色 xml
  • 包括color.xml

标签: android background spinner


【解决方案1】:

这样做会解决你的问题:

 <Spinner
    android:id="@+id/datarenewalperiod_spinner"
    android:layout_width="100dp"
    android:layout_height="50dp"
    android:background="#2eb01e"
    android:popupBackground="@android:color/transparent" />

【讨论】:

    【解决方案2】:

    您可以在 getDropDownView 中调整它:

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
    
        if (convertView == null)
        {
            LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = vi.inflate(R.layout.spinner_dropdown_item, null);
        }
        TextView label = (TextView) super.getDropDownView(position, convertView, parent);
    
        label.getBackground().setAlpha(50);
    
        return label;
    }
    

    setAlpha 取自here

    【讨论】:

      【解决方案3】:

      尝试如下设置 DropDownViewResource

      final CustomAdapter eventSpinnerAdapter = new CustomAdapter(this,R.layout.spinner_dropdown_layout,spinnerData);    
      eventSpinner.setAdapter(eventSpinnerAdapter);
      eventSpinnerAdapter.setDropDownViewResource(R.layout.spinner_dropdown_layout);
      

      【讨论】:

        【解决方案4】:

        您需要设置下拉菜单的背景颜色。

        前-

        android:popupBackground="#COLOR_CODE"

        <Spinner
          android:layout_width="match_parent"
          android:layout_height="35dp"
          android:gravity="center"
          android:popupBackground="@android:color/transparent"
          android:layout_below="@+id/phone"
          android:spinnerMode="dropdown"
          android:id="@+id/eventspinner"
          android:layout_marginTop="10dp"
          android:layout_marginLeft="30dp"
          android:layout_marginRight="30dp"
        />
        

        【讨论】:

          【解决方案5】:

          为微调器添加透明背景

          <Spinner
              android:background="@android:color/transparent"
              android:layout_width="match_parent"
              android:layout_height="35dp"
              android:gravity="center"
              android:layout_below="@+id/phone"
              android:spinnerMode="dropdown"
              android:id="@+id/eventspinner"
              android:layout_marginTop="10dp"
              android:layout_marginLeft="30dp"
              android:layout_marginRight="30dp"
          />
          

          【讨论】:

          • 我将它的背景设置为透明。但它不起作用
          【解决方案6】:

          试试这个

          android:popupBackground="@android:color/transparent"

          【讨论】:

            猜你喜欢
            • 2010-12-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-29
            • 1970-01-01
            • 2015-05-14
            • 1970-01-01
            • 2014-01-03
            相关资源
            最近更新 更多