相关疑难解决方法(0)

Android:克隆一个drawable,以便使用过滤器创建一个StateListDrawable

我正在尝试创建一个通用框架函数,使得任何Drawable在按下/聚焦/选择/等时都会突出显示.

我的函数接受一个Drawable并返回一个StateListDrawable,其中默认状态是Drawable本身,而状态for android.R.attr.state_pressed是相同的drawable,只需使用过滤器setColorFilter.

我的问题是我无法克隆drawable并使用过滤器创建一个单独的实例.这是我想要实现的目标:

StateListDrawable makeHighlightable(Drawable drawable)
{
    StateListDrawable res = new StateListDrawable();

    Drawable clone = drawable.clone(); // how do I do this??

    clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
    res.addState(new int[] {android.R.attr.state_pressed}, clone);
    res.addState(new int[] { }, drawable);
    return res;
}
Run Code Online (Sandbox Code Playgroud)

如果我没有克隆,那么过滤器显然适用于这两种状态.我试过玩,mutate()但它没有帮助..

有任何想法吗?

更新:

接受的答案确实克隆了一个可绘制的.这对我没有帮助,因为我的一般功能在一个不同的问题上失败了.看起来当你向StateList添加一个drawable时,它会丢失所有的过滤器.

android drawable android-widget

87
推荐指数
4
解决办法
3万
查看次数

更改微调器背景颜色但保持箭头

我已经读过几件关于它的事情,但我找不到我需要的东西.我想保留灰色箭头,但我想从默认样式中删除水平条并具有白色背景.你知道我怎么做吗?

这是我现在拥有的(默认微调器样式):

在此输入图像描述

这就是我想要的:

在此输入图像描述

android spinner android-spinner

49
推荐指数
3
解决办法
7万
查看次数

在XML中更改Spinner的下拉箭头的颜色

正如我在我的问题中写的那样,我想改变Spinner XML格式的下拉箭头(默认箭头,不是自定义箭头或类似的东西)的颜色,但问题是我找不到任何东西要做从中引用它XML.

可能吗?如果是,我该如何改变颜色?

提前致谢.

android colors android-layout android-spinner android-color

48
推荐指数
5
解决办法
4万
查看次数

删除微调框上的下划线下拉并更改三角形的颜色

我试图将微调器添加到我的操作栏中。我正在使用cusome微调器。这是代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/block" >

    <Spinner
        android:id="@+id/action_bar_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是我在SpinnerAdapter的getView方法中添加的代码,以获取SpinnerAdapter的自定义标题。它是一个文本视图。

android:id="@+id/spinner_title"
        style="@style/text_title"
        android:layout_alignParentRight="true"
        android:ellipsize="end"
        android:gravity="right"
        android:singleLine="true"
        android:text="@string/list_header"
        android:enabled="false" 
Run Code Online (Sandbox Code Playgroud)

一切正常。但是我在微调器的标题下方出现了下划线,并且我想更改微调器标题右侧的三角形的默认灰色。

请指教。

android android-spinner drop-down-menu

2
推荐指数
1
解决办法
3729
查看次数