Android ImageView - 如何使imageview着色

时间:2016-06-14 01:54:22

标签: android android-layout android-imageview

我有以下layout.xml

    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/image"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:src="@drawable/logo"/>
        ...
    </LinearLayout>

我像这样设置父LinearLayout的背景颜色:

    LinearLayout layout = (LinearLayout) view.findViewById(R.id.layout);
    layout.setBackgroundColor(Color.parseColor("#727272"));
    layout.setAlpha(0.5f);

然而,ImageView(id:image)有色。有没有办法在设置父布局的背景颜色时不调色ImageView

1 个答案:

答案 0 :(得分:0)

事实证明,图像是有色的,因为我将setAlpha称为父布局:

layout.setAlpha(0.5f);

但是,我需要为父布局设置50%的不透明度。因此,我使用以下方法为父布局的背景颜色设置Alpha和RGB,并且它可以工作:设置父布局的背景颜色而不会着色孩子的图像。

LinearLayout layout = (LinearLayout) view.findViewById(R.id.layout);
layout.setBackgroundColor(BitmapDrawableUtility. getColorByOpacityPercentage(calculateOpacity(Color.parseColor("#727272"), 50));


public static int getColorByOpacityPercentage(int color, double percentage) {
    int transparency = (int) Math.round((percentage / 100.0) * 255.0);
    return Color.argb(transparency, Color.red(color), Color.green(color), Color.blue(color));
}