【问题标题】:Inside the spinner how to set imageview at the right corner在微调器内部如何在右上角设置图像视图
【发布时间】:2017-11-23 20:21:39
【问题描述】:
 <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"  >
        <Spinner
            android:id="@+id/spinner1_day"
            android:layout_width="70dp"
            android:layout_height="40dp"
            android:src="@drawable/edit_text_style"
            android:text="Day"
            android:textStyle="normal"
            android:textSize="15dp"
            android:fontFamily="sans-serif-light"
            android:drawSelectorOnTop="true"
            android:entries="@array/Day"
            android:dropDownWidth="fill_parent"
            android:background="@drawable/downimage"/>
        <Spinner
            android:id="@+id/spinner2_month"
            android:layout_width="70dp"
            android:layout_height="40dp"
            android:background="@drawable/edit_text_style"
            android:text="Day"
            android:textStyle="normal"
            android:textSize="15dp"
            android:fontFamily="sans-serif-light"
            android:drawSelectorOnTop="true"
            android:entries="@array/Day"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.81"
            android:layout_marginLeft="10dp"
           />
    </LinearLayout>

我使用了android:dropDownWidth="fill_parent"android:background="@drawable/downimage",但是图片会被设置为背景。如何在右上角的微调器中设置imageview?

【问题讨论】:

标签: android


【解决方案1】:
               <LinearLayout
                android:id="@+id/layoutSpinner"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/input_field"
                android:orientation="horizontal"
                android:padding="5sp">

                <Spinner
                    android:id="@+id/spinner_area"
                    android:layout_width="0sp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="9"
                    android:background="@null"
                    android:entries="@array/state"
                    android:gravity="center"
                    android:prompt="@string/area_prompt"
                    android:spinnerMode="dropdown" />

                <ImageView
                    android:id="@+id/errow"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:padding="5sp"
                    android:src="@drawable/arrow1" />
            </LinearLayout>

【讨论】:

    【解决方案2】:

    使用这个

    在 drawable 文件夹中创建一个 XML,例如 spinner_bg.xml 并添加以下行

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
      <item><layer-list>
            <item><shape>
                    <gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />
    
                    <stroke android:width="1dp" android:color="#504a4b" />
    
                    <corners android:radius="5dp" />
    
                    <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
                </shape></item>
            <item ><bitmap android:gravity="bottom|right" android:src="@drawable/spinner_ab_default_holo_dark_am" />   // you can use any other image here, instead of default_holo_dark_am
            </item>
          </layer-list></item>
    
     </selector>  
    

    将以下行添加到您的 styles.xml,它位于 values 文件夹中

    <style name="spinner_style" >
            <item name="android:background">@drawable/spinner_bg</item>
            <item name="android:layout_marginLeft">10dp</item>
            <item name="android:layout_marginRight">10dp</item>
            <item name="android:layout_marginBottom">10dp</item>
            <item name="android:paddingLeft">8dp</item>
            <item name="android:paddingTop">5dp</item>
            <item name="android:paddingBottom">5dp</item>
    

    现在将此样式添加到您的微调器中

    <Spinner
                android:id="@+id/spinner1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/spinner_style"
                android:popupBackground="#cccccc" />
    

    欲了解更多详情,请访问此处。 Android add arrow image to spinner

    【讨论】:

    • 如果这个答案对你有帮助,那么请接受这个答案。
    • @SivashankariMoorthy,不管你找到与否。
    • 是的,我得到了答案
    • 然后查看图像并将其标记为 True As see in Image。
    • 好的,没关系,很高兴再次为您提供帮助。
    【解决方案3】:

    尝试使用 XML 中的 drawableRight 属性将其设置在微调器的右侧:

    android:drawableRight="@drawable/downimage"
    

    【讨论】:

      【解决方案4】:

      我已经通过使用以下简单代码解决了这个问题

      <RelativeLayout
      
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
             >
      
              <Spinner
                  android:id="@+id/spinner"
                  android:layout_width="match_parent"
                  android:gravity="center"
                  android:layout_height="wrap_content"/>
      
              <ImageView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center"
                  android:layout_centerVertical="true"
                  android:layout_marginRight="10dp"
                  android:layout_alignParentRight="true"
      
                  android:src="@drawable/ambilwarna_arrow_down" />
      
          </RelativeLayout>
      

      希望这对你有用。继续编码

      【讨论】:

        【解决方案5】:

        尝试使用FrameLayout 创建一个自定义微调器,我用这个,效果很好

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@drawable/border_spinner_select_location"
            >
        <Spinner
            android:spinnerMode="dialog"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/spinner_provinsi"
            android:prompt="@string/promp"
            android:background="@drawable/spinner_pressed"
            ></Spinner>
        
            <ImageView
                android:layout_width="23dp"
                android:layout_height="30dp"
                android:src="@drawable/ico_arrow_select_white_xxhdpi"
                android:layout_gravity="right|center_vertical"
                android:layout_marginRight="25dp"
                />
        </FrameLayout>
        

        边界线:

        <?xml version="1.0" encoding="utf-8"?>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:thickness="0dp"
            android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
            <stroke android:width="2dp"
                android:color="@android:color/white" />
        </shape>
        

        按下微调器时的效果

        <?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
        
            <item android:state_enabled="false"
                android:drawable="@android:color/white" />
            <item android:state_pressed="true"
                android:drawable="@color/deep_white_pressed_spinner" />
            <item android:state_pressed="false" android:state_focused="true"
                android:drawable="@android:color/holo_blue_bright" />
            <item android:drawable="@color/semi_white_transparant" />
        
        </selector>
        

        【讨论】:

          【解决方案6】:

          dummy.xml(drawable 应该是非常小的 size-24dp)

          <?xml version="1.0" encoding="utf-8"?>
          <selector xmlns:android="http://schemas.android.com/apk/res/android">
              <item>
                  <layer-list android:opacity="transparent">
                      <item android:width="100dp" android:gravity="right">
                          <bitmap android:src="@drawable/down_button_dummy_dummy" android:gravity="center"/>
                      </item>
                  </layer-list>
              </item>
          </selector>
          

          layout sn-p be like...

          <android.support.v7.widget.CardView
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  app:cardUseCompatPadding="true"
                  app:cardElevation="5dp"
                  >
               <Spinner
                  android:layout_width="match_parent"
                  android:layout_height="100dp"
                  android:background="@drawable/dummy">
          
               </Spinner>
              </android.support.v7.widget.CardView>
          

          【讨论】:

            猜你喜欢
            • 2013-08-08
            • 2017-01-09
            • 2016-07-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-09
            • 2014-05-11
            相关资源
            最近更新 更多