相关疑难解决方法(0)

如何在Android中更改Drawable的颜色?

我正在开发一个Android应用程序,我有一个可绘制的,我正在从源图像加载.在这个图像上,我想将所有白色像素转换为不同的颜色,比如说蓝色,然后缓存生成的Drawable对象,以便稍后使用.

例如,假设我有一个20x20的PNG文件,中间有一个白色圆圈,圆圈外的所有内容都是透明的.将白色圆圈变为蓝色并缓存结果的最佳方法是什么?如果我想使用该源图像创建几个新的Drawables(比如蓝色,红色,绿色,橙色等),答案是否会改变?

我猜我想以某种方式使用ColorMatrix,但我不确定如何.

android android-drawable

253
推荐指数
14
解决办法
30万
查看次数

Android:支持所有设备的背景图像大小(以像素为单位)

我正在创建一个将在所有Android设备上运行的应用程序.我想为我的应用程序创建xhdpi Graphics.我的应用程序全屏.我对创建图形很困惑.谁能告诉我背景图像的最佳尺寸(以像素为单位).

例如:

  • xhdpi:720x1280像素
  • hdpi:480x800像素
  • mdpi:320x480像素
  • ldpi:240x320像素

建议我在所有设备上出现的最佳尺寸.因为我的图形是我的应用程序的核心.

我希望每台设备都能获得想要的最佳图像.Android将不参与压缩或扩展图像.

graphics android

102
推荐指数
4
解决办法
16万
查看次数

Android:在运行时更改形状颜色

我有一个drawable,我用作LinearLayout的背景.我想在运行时更改此Shape的颜色.我尝试过使用几种方法..但都没有用.

我遵循了这里描述的方法:http://www.anddev.org/android-2d-3d-graphics-opengl-problems-f55/change-shape-drawable-solid-color-t16798.html

但是有同样的问题......它不会崩溃..但颜色不会改变!

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00A6C1" />
    <corners android:radius="@dimen/square_corners" />
</shape>
Run Code Online (Sandbox Code Playgroud)

代码片段:

GradientDrawable drawable = (GradientDrawable) activity.getResources().getDrawable(R.drawable.blue_square_shape);


int color = ((Application) getApplication()).getColor();
drawable.setColor(color);

block.findViewById(R.id.blockSquare).setBackgroundDrawable(drawable);

findViewById(R.id.blockSquare).postInvalidate();
Run Code Online (Sandbox Code Playgroud)

任何线索?我已经过了一整天谷歌搜索...而且它变得很烦人......

更新:

当我尝试对此形状执行相同操作时:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shape" android:shape="rectangle">
    <gradient android:startColor="#1FBCCF" android:endColor="#06A4C1"
        android:angle="270" />
    <corners android:topLeftRadius="@dimen/footer_corners"
        android:topRightRadius="@dimen/footer_corners" />
</shape>
Run Code Online (Sandbox Code Playgroud)

颜色变成黑色......我想它可以改变...

android drawable

51
推荐指数
5
解决办法
6万
查看次数

如何在android中改变可绘制形状的颜色

我正在开发小型Android应用程序,其中我将drawable资源设置为线性布局的背景.现在,我想要做的是动态地改变线性布局的背景颜色,但是在可绘制资源中.我的代码看起来像:

//  bcd.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item>        
    <shape>
        <gradient
            android:endColor="#22000000"
            android:startColor="#22000000"
            android:angle="270" />
        <stroke
            android:width="3dp"
            android:color="@color/white" />
        <corners
            android:radius="3dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>
</item>
Run Code Online (Sandbox Code Playgroud)

<LinearLayout 
android:id="@+id/lin_llt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
Run Code Online (Sandbox Code Playgroud)

我在我的活动中设置了线性布局的背景,如下所示......

parentLayout = (LinearLayout) view.findViewById(R.id.lin_llt);
parentLayout.setBackgroundResource(R.drawable.bcd);
Run Code Online (Sandbox Code Playgroud)

现在我想做什么我想改变我的可绘制资源的颜色,这意味着改变我的线性布局的颜色,圆角和填充定义在drawable ..

我按照以下方式尝试了这个

ShapeDrawable bgShape = (ShapeDrawable )parentLayout.getBackground();
bgShape.getPaint().setColor(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)

但它不适合我.任何其他解决方案

那怎么办......需要帮助......谢谢......

android background drawable android-linearlayout

27
推荐指数
2
解决办法
5万
查看次数

Android自定义后台xml发送属性

我有以下xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <corners android:radius="10dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它只是一个带圆角的形状.我将它用于活动布局中的背景,如下所示:

android:background="@drawable/rounded_corners"
Run Code Online (Sandbox Code Playgroud)

文件中的形状当前设置为白色.在不同的布局中,我需要不同的颜色.我是否需要为每种颜色创建不同形状的xml文件?我需要一种方法来在布局中指定要发送到背景的颜色,这样我就可以使用相同的xml来获得我想要的任何颜色.

谢谢.

android android-layout android-xml

5
推荐指数
1
解决办法
5605
查看次数

如何更改放置在edittext中的图标的颜色?

我正在开发一个具有多种形式的应用程序,但我想要对它产生一些影响。我想要做的是改变放置在里面的图标的颜色edit text

<EditText
    android:id="@+id/marks"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/button1"
    android:layout_alignParentTop="true"
    android:layout_marginTop="10dp"
    android:drawableRight="@drawable/ic_border"
    android:hint="Total Marks"
    android:inputType="number"
    android:textColor="#fff" />
Run Code Online (Sandbox Code Playgroud)

android android-layout android-xml android-edittext

5
推荐指数
1
解决办法
3396
查看次数

Mapbox for Android:更改标记图标的颜色

我在我的Android应用程序中使用Mapbox,并为我的标记设置了自定义(黑色)图标.如果它是黑色的话,是否可以将标记的图标颜色更改为其他颜色?

如果可以使用默认图标,我也可以使用默认图标.

android mapbox

5
推荐指数
1
解决办法
4374
查看次数

以编程方式更改android按钮可绘制图标颜色

我想以编程方式从我的按钮更改我的图标颜色...

在我的xml上,我有:

            android:drawableTint="@color/colorPrimary"
            android:drawableTop="@drawable/ic_car_black_24dp"
Run Code Online (Sandbox Code Playgroud)

设置图标并设置图标颜色...但我想从我的java端更改图标颜色...

有人能帮我吗?

        <android.support.v7.widget.AppCompatButton
            android:id="@+id/bt_search_vehicle_car"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/eight_density_pixel"
            android:layout_weight="1"
            android:background="@drawable/background_rounded_blue_border"
            android:drawableTint="@color/colorPrimary"
            android:drawableTop="@drawable/ic_car_black_24dp"
            android:padding="@dimen/eight_density_pixel"
            android:text="Carros"
            android:textAllCaps="false"
            android:textColor="@color/colorPrimary" />
Run Code Online (Sandbox Code Playgroud)

android

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

更改重叠视图下的图像的色彩颜色

我有一个滚动视图,其中包含很多图像。我想实现一个高亮区域,该区域会更改其下方所有视图的颜色(仅该区域下方的部分视图)

在此处输入图片说明

这是布局,vOverlayColor是我要设置覆盖颜色的视图。

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/spacing_large"
                android:adjustViewBounds="true"
                android:src="@drawable/ic_delete"
                android:tint="@color/colorGreyDark"
                tools:ignore="ContentDescription" />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/spacing_large"
                android:adjustViewBounds="true"
                android:src="@drawable/ic_delete"
                android:tint="@color/colorGreyDark"
                tools:ignore="ContentDescription" />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/spacing_large"
                android:adjustViewBounds="true"
                android:src="@drawable/ic_delete"
                android:tint="@color/colorGreyDark"
                tools:ignore="ContentDescription" />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/spacing_large"
                android:adjustViewBounds="true"
                android:src="@drawable/ic_delete"
                android:tint="@color/colorGreyDark"
                tools:ignore="ContentDescription" />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/spacing_large"
                android:adjustViewBounds="true"
                android:src="@drawable/ic_delete"
                android:tint="@color/colorGreyDark"
                tools:ignore="ContentDescription" />
        </LinearLayout>
    </ScrollView>

    <View
        android:id="@+id/vOverlayColor"
        android:layout_width="match_parent"
        android:layout_height="120dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗?

android android-layout android-view android-constraintlayout

5
推荐指数
1
解决办法
210
查看次数

如何在自定义适配器中更改可绘制形状的背景颜色

我在自定义列表视图项目中有一个按钮,我正在使用以下可绘制的xml文件:

rounded_corner.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="120dp" android:layout_height="100dp">

    <stroke
        android:width="1dp"
        android:color="#FFFFFF" />

    <solid android:color="#002832" />

    <padding
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

    <corners android:radius="5dp" />

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

我使用了"#002832"颜色作为drawable.现在,我想以编程方式更改可绘制文件的颜色.我怎样才能做到这一点?

请在没有理解问题的情况下停止标记为重复.

  1. 我检查了@Ganesh Pokele SO链接anf,它完全不同.

  2. 我查了@bizzard提供的链接但无法解决我的问题.

android android-layout android-xml android-adapter android-drawable

3
推荐指数
1
解决办法
4422
查看次数

在RecyclerView中为棒棒糖之前的可绘制着色

我正在尝试在我的RecyclerView中使用以下代码使用可绘制着色

Drawable likeDrawable = ContextCompat.getDrawable(getActivity(), R.drawable.ic_thumb_up);
Drawable likeWrappedDrawable = DrawableCompat.wrap(likeDrawable);
DrawableCompat.setTint(likeWrappedDrawable,ContextCompat.getColor(getActivity(), android.R.color.white));
holder.ivLike.setImageDrawable(likeWrappedDrawable);
Run Code Online (Sandbox Code Playgroud)

现在,所有这些工作都在onBindViewHolderRecyclerView Adapter的中完成。

我会根据该列表项的状态在三种颜色之间更改此色调。对于Lolipop及更高版本,这一切正常,但在此版本以下,列表项目的颜色是无法预测的。有时它显示正确的颜色,但刷新列表时有时会更改为其他颜色。

Anything im doing wrong here or the tinting thing on pre-lollipop is still unusable in this particular case?

Update Including the code from my onBindViewHolder

@Override
        public void onBindViewHolder(ViewHolder holder, int position) {
...

            Drawable likeDrawable =
                    ContextCompat.getDrawable(getActivity(), R.drawable.ic_thumb_up);


            Drawable likeWrappedDrawable = DrawableCompat.wrap(likeDrawable);


                holder.tvLikeCount.setTextColor(ResUtil.getColor(R.color.light_font,
                        getActivity()));

                DrawableCompat.setTint(likeWrappedDrawable,
                        ContextCompat.getColor(getActivity(), android.R.color.white));

                if (tweetModel.isFavorited()) {
                DrawableCompat.setTint(likeWrappedDrawable,
                        ContextCompat.getColor(getActivity(), android.R.color.holo_blue_light));
            }



            holder.ivLike.setImageDrawable(likeWrappedDrawable);

        }
Run Code Online (Sandbox Code Playgroud)

android android-drawable android-recyclerview

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