【问题标题】:Android Spinner Dropdown arrow not displayingAndroid Spinner 下拉箭头不显示
【发布时间】:2015-05-14 14:09:37
【问题描述】:

我的片段背景是白色的,除非我点击它,否则微调器的箭头不会显示。

这是我的 Java 文件中的 sn-p:

    spinner = (Spinner)v.findViewById(R.id.spinner);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.accounts,R.layout.spinner_item);
    adapter.setDropDownViewResource(R.layout.spinner_dropdown_items);
    spinner.setAdapter(adapter);
    spinner.setPrompt("Select an account");

这是我用于 spinner_item 的 XML

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"
android:textSize="16dp"
android:background="#FFFFFFFF"
android:textColor="#ff252525"/>

这是我的 spinner_dropdown_items 的布局。

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"
android:textSize="16dp"
android:background="#FFFFFFFF"
android:textColor="#ff252525"/>

这是我的微调器在片段的白色背景下的外观: White Colour Background - Spinner 这就是我将背景颜色更改为紫色时的样子: Purple background - Spinner

【问题讨论】:

    标签: android xml layout fragment spinner


    【解决方案1】:

    这对我有用,也更简单:

    <Spinner
          android:id="@+id/spinner"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:theme="@style/ThemeOverlay.AppCompat.Light"
          android:spinnerMode="dropdown" />
    

    在你的类文件中:

    spinner = (Spinner) view.findViewById(R.id.spinner);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    

    希望这会有所帮助;)

    【讨论】:

      【解决方案2】:

      试试这个:

      <Spinner
           android:id="@+id/spinnPhoneTypes"
           android:layout_width="0dp"
           style="@android:style/Widget.Spinner.DropDown"
           android:layout_height="@dimen/thirtyFive"
           android:layout_marginLeft="10dp"
           android:layout_weight="1"
           android:background="@drawable/shape_drop_down_normal"
           android:gravity="center_vertical" />
      

      shape_drop_down_normal.xml

      <?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
          <item>
              <shape>
                  <solid android:color="@android:color/transparent" />
      
                  <stroke
                      android:width="1dp"
                      android:color="#6f94c7" />
      
                  <padding
                      android:bottom="10dp"
                      android:left="2dp"
                      android:right="10dp"
                      android:top="10dp" />
              </shape>
          </item>
          <item>
              <bitmap
                  android:gravity="end"
                  android:src="@drawable/drop_arrow" />
          </item>
      </layer-list>
      

      【讨论】:

      • 我该怎么做呢?我不太确定我是如何尝试这种方式的
      • 只是一个补充:如果你的 drop_arrow 是一个向量,你必须将 &lt;item&gt;&lt;bitmap.. 部分更改为 &lt;item android:gravity="end" android:drawable="@drawable/drop_arrow" /&gt;
      【解决方案3】:

      检查您是否为Spinner 提供背景,如果您删除它,它将解决问题

      【讨论】:

        【解决方案4】:

        只需在Spinner 标签中添加主题即可。

        android:theme="@style/ThemeOverlay.AppCompat.Light"
        

        【讨论】:

        • 哇!这对我有用
        【解决方案5】:
            <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="20dp"
                    android:background="@drawable/edit_bg">
                    <androidx.appcompat.widget.AppCompatSpinner
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:fontFamily="@font/railayregular"
                        app:adapter="@{adapter}"
                        android:onItemSelected="@{click::click}"
                        android:textColor="@color/black"
                        android:spinnerMode="dropdown"
                        android:theme="@style/Theme.AppCompat.Light"
                        android:textColorHint="@color/black" />
                </RelativeLayout>
        

        【讨论】:

          【解决方案6】:

          最简单的方法是设置背景图片(带箭头)而不是颜色。

           spinner.setBackgroundResource(R.drawable.spinner_img);
          

          希望对你有帮助。

          【讨论】:

          • 我尝试过这种方式,但图片在微调器上到处都是。我希望箭头在微调器的一侧。所以现在它看起来像这样; [dropbox.com/s/oe59pxiehktwdet/…
          【解决方案7】:

          为避免使用可绘制对象,请将微调器包装在视图中,并为包装器视图设置背景颜色。例如,

          <android.support.v7.widget.CardView
                  android:id="@+id/cardView_spinner"
                  android:layout_width="match_parent"
                  android:layout_height="60dp"
                  android:layout_margin="32dp"
                  android:background="@color/white">
          
                  <Spinner
                      android:id="@+id/spinner"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent" />
          
              </android.support.v7.widget.CardView>
          

          【讨论】:

            【解决方案8】:

            删除微调器的背景颜色,例如您设置了不会显示下拉图标的白色背景

            【讨论】:

              【解决方案9】:

              如果您使用 Material Components 作为主题,这也适用于我,

              <Spinner
                    android:id="@+id/spinner"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:theme="@style/Theme.MaterialComponents.Light"
                    android:spinnerMode="dropdown" />
              

              在你的代码中:

              spinner = (Spinner) view.findViewById(R.id.spinner);
              ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item);
              adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
              spinner.setAdapter(adapter);
              

              【讨论】:

                猜你喜欢
                • 2023-01-21
                • 1970-01-01
                • 1970-01-01
                • 2017-05-31
                • 1970-01-01
                • 1970-01-01
                • 2020-10-10
                • 2015-11-16
                • 1970-01-01
                相关资源
                最近更新 更多