更改视图的背景颜色而不删除drawable

时间:2017-12-14 22:38:25

标签: android

我有一个带有drawable set的视图:

my_drawable

View会更改view.setBackgroundColor(myColor); 单击/按下时的外观,但不会设置其背景颜色。我想在代码中设置其背景颜色:

my_drawable

但这会从中移除my_drawable。如何在不删除my_drawable的情况下更改背景颜色?

修改

这是<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@xml/button_round_corner_pressed_shape" android:state_pressed="true"></item> <item android:drawable="@xml/button_round_corner_default_shape"></item> </selector>

button_round_corner_pressed_shape

这是<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:width="@dimen/button_pressed_stroke_width" android:color="@color/colorAccent" /> <corners android:radius="@dimen/button_corner_radius" /> </shape>

{{1}}

6 个答案:

答案 0 :(得分:1)

使用带有drawable的ImageView作为android:src并根据需要更改背景。

答案 1 :(得分:1)

一种解决方案是将视图与ImageView重叠,以便您可以在视图中设置背景颜色并在ImageView中设置drawable。

答案 2 :(得分:1)

您可以使用ImageView并将您的drawable设置为以下代码:

<ImageView
    android:id="@+id/view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/green_circle" />

然后,您可以在运行时更改drawable的颜色,而无需更改drawable:

ImageView view=(ImageView)findViewById(R.id.view);
view.setColorFilter(Color.RED);

答案 3 :(得分:0)

使用CheckedText视图和选择器进行选中,取消选中。  Onclick只是切换选中状态。

 routes.MapRoute(
            name: "Default",
            url: "{area}/{controller}/{action}/{id}",
            defaults: new {area = "User" ,controller = "UserView", action = "Index", id = UrlParameter.Optional }
        );

答案 4 :(得分:0)

  

但这会从中移除select * from (SELECT id,user_type,retailerId,subdealerId,dealerId,assigned_role, IF( user_type = '5', (select name from retailer where retailer.id=users_dealers.retailerId), (select name from sub_dealers where sub_dealers.id=users_dealers.subdealerId ) ) AS from_name, IF( assigned_role = '6', (select name from dealers where dealers.id=users_dealers.dealerId), (select name from sub_dealers where sub_dealers.id=users_dealers.dealerId ) ) AS assigned_name FROM users_dealers) t1 WHERE t1.from_name LIKE '%a%' OR t1.assigned_name LIKE '%a%' 。如何在不删除my_drawable的情况下更改背景颜色?

您想通过不删除my_drawable来更改背景颜色吗?这似乎让我的朋友感到困惑。如果您不想删除可绘制的,为什么要更改背景颜色?

您真的想要更改哪种背景颜色?

您也可以将drawable更改为新的..

属性my_drawable实际上接受了几种类型。你可以尝试绘画和颜色。

您还可以使用android:background颜色进行编程,并使用view.setBackgroundColor(color)进行背景绘制。

参考

答案 5 :(得分:0)

这最终对我有用:

<ImageView
    android:id="@+id/view_background"
    android:layout_width="@dimen/width"
    android:layout_height="@dimen/height"
    android:src="@xml/button_round_corner_default_shape" />

<View
    android:layout_width="@dimen/width"
    android:layout_height="@dimen/height"
    android:background="@xml/my_drawable" />

在代码中:

viewBackground = findViewById<ImageView>(Resource.Id.view_background);
viewBackground.setColorFilter(color);

我结合了每个人的答案来做到这一点。