返回顶部
首页 > 资讯 > 移动开发 >Android setButtonDrawable()的兼容问题解决办法
  • 789
分享到

Android setButtonDrawable()的兼容问题解决办法

兼容Android 2022-06-06 11:06:43 789人浏览 薄情痞子
摘要

Android  setButtonDrawable()的兼容问题解决办法 setButtonDrawable()的兼容问题 api16实现 public v

Android  setButtonDrawable()的兼容问题解决办法

setButtonDrawable()的兼容问题

api16实现


 
 public void setButtonDrawable(int resid) {
  if (resid != 0 && resid == mButtonResource) {
   return;
  }
  mButtonResource = resid;
  Drawable d = null;
  if (mButtonResource != 0) {
   d = getResources().getDrawable(mButtonResource);
  }
  setButtonDrawable(d);
 }
 
 public void setButtonDrawable(Drawable d) {
  if (d != null) {
   if (mButtonDrawable != null) {
    mButtonDrawable.setCallback(null);
    unscheduleDrawable(mButtonDrawable);
   }
   d.setCallback(this);
   d.setState(getDrawableState());
   d.setVisible(getVisibility() == VISIBLE, false);
   mButtonDrawable = d;
   mButtonDrawable.setState(null);
   setMinHeight(mButtonDrawable.getIntrinsicHeight());
  }
  refreshDrawableState();
 }

API23实现


 
 public void setButtonDrawable(@DrawableRes int resId) {
  final Drawable d;
  if (resId != 0) {
   d = getContext().getDrawable(resId);
  } else {
   d = null;
  }
  setButtonDrawable(d);
 }
 
 @Nullable
 public void setButtonDrawable(@Nullable Drawable drawable) {
  if (mButtonDrawable != drawable) {
   if (mButtonDrawable != null) {
    mButtonDrawable.setCallback(null);
    unscheduleDrawable(mButtonDrawable);
   }
   mButtonDrawable = drawable;
   if (drawable != null) {
    drawable.setCallback(this);
    drawable.setLayoutDirection(getLayoutDirection());
    if (drawable.isStateful()) {
     drawable.setState(getDrawableState());
    }
    drawable.setVisible(getVisibility() == VISIBLE, false);
    setMinHeight(drawable.getIntrinsicHeight());
    applyButtonTint();
   }
  }
 }

结论

RadioButton和CheckBox都是Android app中常用的Widget,它们派生于CompoundButton,允许使用者自行设置背景和按钮的样式,不过,有时我们仅希望简单的设置一个有状态的背景,并隐藏其默认样式。可是,当我们调用setButtonDrawable(null)或setButtonDrawable(0)时,却发现完全没有效果。原来,CompoundButton的setButtonDrawable的代码实现中屏蔽了null或resid为0的Drawable,迫使我们必须传入有效的Drawable对象。

这时候,透明颜色就可以派上用场了:

button.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT));

参考:

隐藏RadioButton, CheckBox图片 setButtonDrawable:

RadioButton和CheckBox都是Android app中常用的Widget,它们派生于CompoundButton,允许使用者自行设置背景和按钮的样式,不过,有时我们仅希望简单的设置一个有状态的背景,并隐藏其默认样式。可是,当我们调用setButtonDrawable(null)或setButtonDrawable(0)时,却发现完全没有效果。原来,CompoundButton的setButtonDrawable的代码实现中屏蔽了null或resid为0的Drawable,迫使我们必须传入有效的Drawable对象。

这时候,透明颜色就可以派上用场了:


button.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT)); 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:Android实现输入法弹出时把布局顶上去和登录按钮顶上去的解决方法android虚拟键盘弹出遮挡登陆按钮问题的解决方法Android防止按钮过快点击造成多次事件的解决方法Android Button 自带阴影效果另一种解决办法Android中EditText+Button组合导致输入板无法收起的原因分析及解决办法实例详解Android解决按钮重复点击问题Android开发软键盘遮挡登陆按钮的完美解决方案Android优雅的方式解决软键盘遮挡按钮问题Android编程出现Button点击事件无效的解决方法示例


--结束END--

本文标题: Android setButtonDrawable()的兼容问题解决办法

本文链接: https://lsjlt.com/news/28249.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android setButtonDrawable()的兼容问题解决办法
    Android  setButtonDrawable()的兼容问题解决办法 setButtonDrawable()的兼容问题 API16实现 public v...
    99+
    2022-06-06
    兼容 Android
  • 如何解决在Android中使用setButtonDrawable()方法出现的兼容问题
    这篇文章给大家介绍如何解决在Android中使用setButtonDrawable()方法出现的兼容问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android  setButtonDrawable()的...
    99+
    2023-05-31
    setbuttondrawable() android roi
  • Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
    在前几天的开发中,遇到这么个非常奇葩的异常,有些手机可以运行,有些手机却直接就崩了,今天就把这异常整理下。 首先还是贴上其异常信息 E/AndroidRuntime: FATAL EXCEPTION: ...
    99+
    2022-06-04
    解决办法 兼容性问题 Android
  • JS脚本兼容性问题的解决方法
    这篇文章给大家介绍JS脚本兼容性问题的解决方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。这里和大家分享一下解决JS脚本兼容的几个小技巧,关于JS脚本兼...
    99+
    2024-04-02
  • 解决padding ie不兼容问题
    这篇文章主要讲解了“解决padding ie不兼容问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“解决padding ie不兼容问题”吧!通常我们遇到3种...
    99+
    2024-04-02
  • css兼容问题如何解决
    这篇文章主要介绍了css兼容问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css兼容问题如何解决文章都会有所收获,下面我们一起来看看吧。 针对差别的IE浏览器版...
    99+
    2024-04-02
  • 如何解决Vue兼容ie9的问题
    这篇文章给大家分享的是有关如何解决Vue兼容ie9的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言背景情况vue - 2.5.11vue-cli 使用模板 webpack...
    99+
    2024-04-02
  • 如何解决cssdisplaynlineblock的兼容性问题
    今天就跟大家聊聊有关如何解决cssdisplaynlineblock的兼容性问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 ...
    99+
    2024-04-02
  • win10不兼容问题如何解决
    解决Windows 10不兼容问题可以尝试以下方法:1. 更新驱动程序:访问电脑制造商的官方网站或设备制造商的网站,下载并安装最新的...
    99+
    2023-10-09
    win10
  • 快速解决IE8兼容性问题的两大办法分别是什么
    快速解决IE8兼容性问题的两大办法分别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。你对IE8兼容性问题的解决方法是否了解,这里和大家简...
    99+
    2024-04-02
  • 如何解决Vue+webpack+Element的兼容问题
    小编给大家分享一下如何解决Vue+webpack+Element的兼容问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目中用...
    99+
    2024-04-02
  • JS如何解决position:sticky的兼容性问题
    这篇文章主要介绍JS如何解决position:sticky的兼容性问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在项目中有用到sticky的布局,可是由于兼容性问题,在安卓端没有...
    99+
    2024-04-02
  • JPA与mybatis-plus不兼容问题的解决
    引入mybatis-plus后,在spring-boot启动时,JPA会使用CCJSqlParser对SQL进行分析处理,由于@Query中的Native-SQL语法并非完全的sql...
    99+
    2023-02-24
    JPA与mybatis-plus不兼容 Mybatis Plus JPA 冲突
  • Android setTag方法的key问题解决办法
    android在设计View类时,为了能储存一些辅助信息,设计一个一个setTag/getTag的方法。这让我想起在Winform设计中每个Control同样存在一个Tag。 ...
    99+
    2022-06-06
    key Android
  • Android getActivity()为空的问题解决办法
    Android getActivity()为空的问题解决办法  在开发项目中有时会碰到getActivity函数为空的情况,    导致apk空指针崩溃问题,  看代码逻辑没有明显的原因。&...
    99+
    2023-05-30
    android getactivity() roi
  • 如何解决Android中WebView的input上传照片兼容问题
    小编给大家分享一下如何解决Android中WebView的input上传照片兼容问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题前几天接到的一个需求,是关于...
    99+
    2023-05-30
    android webview input
  • 用JavaScript解决IE6至IE8兼容问题
    本篇内容主要讲解“用JavaScript解决IE6至IE8兼容问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用JavaScript解决IE6至IE8兼容问题...
    99+
    2024-04-02
  • XHTML+CSS兼容性问题怎么解决
    本篇内容主要讲解“XHTML+CSS兼容性问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“XHTML+CSS兼容性问题怎么解决”吧!解决XHTML+C...
    99+
    2024-04-02
  • win10兼容常见问题怎么解决
    本篇内容介绍了“win10兼容常见问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!win10兼容模式设置的方法首先右键打开需要设置...
    99+
    2023-07-01
  • 解决IE6兼容性问题的常见方法有哪些
    今天就跟大家聊聊有关解决IE6兼容性问题的常见方法有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。解决IE6兼容性问题常见方法1、使用声明你必须...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作