Skip to content

9、使用注意

javaKepp edited this page Mar 24, 2022 · 6 revisions

1、selector的相关属性,如果传入的drawable不是颜色的资源,会覆盖掉shape设置的属性
2、在根布局添加

    tools:ignore="MissingPrefix"

可以防止报红
3、因为layoutInflater限制了只能有一个factory,如果有其他库已经使用了setFactory方法,比如换肤的库:

在application中加入:

{
    BLAutoInjectController.setEnableAutoInject(false);
}

在activity的super.onCreate和setContentView之间加入:

BackgroundLibrary.inject(context);

这样其他的库与本库同样可以生效。
4、fragment使用无需任何处理,其Activity调用inject即可
5、listView,recyclerView使用也无需任何处理。 如果不生效,只需要

//在调用inflate只需调用一次context,保证adapter创建View时传入的是同一个context即可
BackgroundLibrary.inject(context);

View item = LayoutInflater.from(context).inflate(xxx)

6、自定义View中调用了inflate,同listView一样处理即可
7、关于水波纹,如果光设置下面两个属性是无效的,必须还要有个填充颜色的属性,原因如下:

app:ripple_color="#71C671"
app:ripple_enable="true"

水波纹需要设置一个默认背景颜色,也就是填充颜色。比如app:solid_color 或者app:unPressed_drawable 或者app:unFocussed_drawable等都行,这些都是默认等背景颜色。而app:ripple_color是波纹的颜色。如果没有一个背景色,这个波纹颜色是无法显示的
9、由于Android源码的原因,如果是通过代码生成有点击状态drawable,需要先调用一下

 view.setClickable(true);

否则点击状态可能不生效
10、bl_position 不能与bl_ripple_enable同时使用
11、tinker热修复框架导致不生效的问题,在Application或者AppLike里面手动registerActivityLifecycleCallbacks:

public class BLActivityLifecycleRegister implements Application.ActivityLifecycleCallbacks {
  @Override
  public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    BackgroundLibrary.inject(activity);
  }

  @Override
  public void onActivityStarted(Activity activity) {

  }

  @Override
  public void onActivityResumed(Activity activity) {

  }

  @Override
  public void onActivityPaused(Activity activity) {

  }

  @Override
  public void onActivityStopped(Activity activity) {

  }

  @Override
  public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

  }

  @Override
  public void onActivityDestroyed(Activity activity) {

  }
}

12、java.lang.NoClassDefFoundError: Failed resolution of: Lcom/noober/background/R$styleable错误,是因为主dex没有BackgroundLibrary的原因,解决方法如下,创建multidex.pro,设置BL在主dex中:

multidex.pro的内容为
-keep class com.noober.background.**{*;}
13、在ViewStab标签中无法使用,需要使用BLView.
14、1.7.4之后,部分有点击效果的属性,需要在代码中设置clickable为true才能生效,例如bl_pressed_color、bl_checked_stroke_color、bl_selected_stroke_color等等