繁体   English   中英

将Mipmap资源用作Button DrawableTop

[英]Using Mipmap resource as Button DrawableTop

我目前正在使用Xamarin.Android应用程序。 我有一个包含文本和DrawableTop mipmap图像的按钮。 当我在axml中设置默认的DrawableTop图像时,它正在工作,我的图像出现在我想要的位置。

但是,我想做的是,在单击按钮时以编程方式在按钮内更改此图像,然后再次单击后还原(使用布尔值检查实际状态)。

因此,我在Internet上进行了检查,发现该函数可以替换C#代码中按钮中的可绘制对象。 我还需要收集所需的mipmap图像,但是由于该按钮需要Drawable objetcs,因此我尝试了几种方法,唯一不会崩溃的是:

Drawable topDrawable = Resources.GetDrawable(Resource.Mipmap.mymipmap);
filterButton.SetCompoundDrawables(null, topDrawable, null, null);
//The parameters being, in order, left, top, right, bottom drawables.

编译时,我可以看到在布局中定义了默认DrawableTop的按钮,但是当我单击时,它消失了,而不是显示新图像。 我的猜测是topDrawable实际上等于null。

因此,我正在寻找一种获取Mipmap资源并将其用作可绘制对象的方法。 但是也许我错了,问题出在别的地方。

提前致谢 !

实际上,我认为解决方案更简单。 正如我用断点检查的那样,drawable不等于null。 问题出在图像的位置。 直接在布局中定义图像时,此Drawable有一个自动定义的位置。 当以编程方式使用上述功能替换可绘制对象时,我们还将替换位置。 为了保持原始位置并仅替换图像,我们需要这样做:

Drawable topDrawable = Resources.GetDrawable(Resource.Mipmap.mymipmap);
filterButton.SetCompoundDrawablesWithIntrinsicBounds(null, topDrawable, null, null);

函数的名称说明了一切。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM