【问题标题】:set the background color, border and arrow icon in spinner in android在 android 的微调器中设置背景颜色、边框和箭头图标
【发布时间】:2015-09-11 05:47:17
【问题描述】:

我想创建一个带有白色背景和黑色边框和箭头图标的微调器(如果可能,不使用图像)。

但是当我使用以下代码时,微调器显示带有黑色边框的白色背景,但不显示箭头图标。

 <Spinner
    android:id="@+id/spinner"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.5" 
    android:background="@drawable/txtbox_row_border"
    android:spinnerMode="dropdown"
     >
</Spinner>

txtbox_row_border.xml 代码

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#FFFFFF" />
<stroke
    android:width="1dp"
    android:color="#515151" />
</shape>

当我使用以下代码时,微调器显示箭头图标,但背景为灰色。

 <Spinner
    android:id="@+id/spinner"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1.5" 
    android:background="@android:drawable/btn_dropdown" 
    android:spinnerMode="dropdown" >
</Spinner>

如何在单个代码块中实现我的所有要求? 提前致谢。

【问题讨论】:

标签: android android-spinner android-custom-view


【解决方案1】:

您可以通过务实地使用创建一种方法来更改微调器边框

 public static GradientDrawable backgroundWithBorder(int bgcolor,
            int brdcolor) {

        GradientDrawable gdDefault = new GradientDrawable();
        gdDefault.setColor(bgcolor);
        gdDefault.setStroke(2, brdcolor);
        gdDefault.setCornerRadii(new float[] { radius, radius, 0, 0, 0, 0,
                radius, radius });

        return gdDefault;

}

然后由

设置
act_delivery_address_type_spn.setBackground(Methods
                .backgroundWithBorder(getResources()
                        .getColor(R.color.txt_white),
                        getResources().getColor(R.color.border_gray)));

对于背景和边框使用了这种方法。 为箭头图标创建自定义微调器

【讨论】:

  • 这对我来说是一个起点。这本身不起作用,但是当我从微调器中获得选定的视图并从那里设置背景时,它就起作用了。这就是我所做的: spinners[y].getSelectedView().setBackground(backgroundWithBorder(colorBackground, colorBorder));
【解决方案2】:

试试这个...

创建一个新样式是styles.xml

<style name="spinner_style">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:background">@drawable/border</item>
        <item name="android:layout_margin">10dp</item>
        <item name="android:paddingLeft">8dp</item>
        <item name="android:paddingRight">8dp</item>
        <item name="android:paddingTop">5dp</item>
        <item name="android:paddingBottom">5dp</item>
        <item name="android:popupBackground">#DFFFFFFF</item>
    </style>

在drawable中创建边框形状border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#FFFFFF" />
    <stroke
        android:width="1dp"
        android:color="#515151" />
</shape>

微调器就像

将样式应用于线性布局

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/spinner_style">

        <Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:spinnerMode="dropdown" >
        </Spinner>

    </LinearLayout>

【讨论】:

    【解决方案3】:

    1 - 创建一个 custom_spinner.xml

    2- 在这个“custom_spinner.xml”中设置一个 TextView 并配置所有你想要的。

    <?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="match_parent"
            android:gravity="center"
            android:soundEffectsEnabled="true"
            android:background="#000000"
            android:ellipsize="marquee"
            android:textColor="@color/textWhite"
    
            android:drawableRight="@drawable/ic_keyboard_arrow_right_black_24dp"
    
            android:textAlignment="inherit"/>
    

    【讨论】:

      猜你喜欢
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-01
      • 2021-06-29
      相关资源
      最近更新 更多