Android 坑神

以下内容为本人踩过的坑,望看到这能让你踩着我的头过去吧:)

  1. xml 中分割线要用 View,不是 view

  2. 关闭资源、pop、键盘需在 onPause() 中,而不是 onStop()

  3. js 调用 Android 方法,该方法的形参最好是 String 类型,否则H5 页面中有多个 js 方法调用 Android 方法,形参是 int 为 0;

    // 进入 大主页
    @JavascriptInterface
    public void lookUserDetailedInfor(String id) { //对应js中 douQuJS.lookUserDetailedInfor(data); ps:js 调用 Android 方法,该方法的形参最好是 String 类型,否则H5 页面中有多个 js 方法调用 Android 方法,形参是 int 为 0;
        NSLog.w(TAG, "WebViewFragment{} ... lookUserDetailedInfor() --> id = " + id);
    }
  1. setClickable(true)不起作用 : setClickable(false)要放在setOnClickListener后面,否则会不起作用

  2. 当一个 view 不显示时,考虑是不是 在 new XXView() 的同时 ButterKnife 也创建一个 字段 xxView;

  3. git pull 更新最新代码时 而本地代码有改动时会报error:

error: Your local changes to the following files would be overwritten by merge:
        app/src/main/java/com/blankj/androidutilcode/activity/KeyboardActivity.java
Please commit your changes or stash them before you merge.
Aborting

解决方法:

git checkout -f
git pull
  1. 有时不弹键盘,scrollTo() 不灵,可以这样尝试下:
    HandlerUtil.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            KeyboardUtil.showSoftInput(et_new_label);
        }
    }, 100);
  1. 检查项目所有的依赖包dependencies:
./gradlew -q dependencies :dependencies --configuration compile
  1. ScrollView中监听setOnScrollChangeListener Y的位置改变titleBar的透明度,有时会影响别的页面的底色,很奇怪。这样这样尝试下:
    rl_family_title_bar.setBackgroundColor(Color.WHITE); // 若修改此 view 的透明度,必须在代码里设置背景,否则会影响一些页面的底色
    rl_family_title_bar.getBackground().setAlpha(0);

    nsv_root.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
        @Override
        public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
            int alpha = 255 * scrollY / LocalDisplay.dp2px(257);
            if (alpha < 0) {
                alpha = 0;
            } else if (alpha > 255) {
                alpha = 255;
            }
            rl_family_title_bar.getBackground().setAlpha(alpha);
            if(alpha < 128) {
                tv_title.setTextColor(Color.WHITE);
                iv_back.setImageResource(R.drawable.btn_menu_back_white);
            } else {
                tv_title.setTextColor(Color.BLACK);
                iv_back.setImageResource(R.drawable.btn_menu_back);

            }
        }
    });
  1. SurfaceView闪屏问题
getWindow().setFormat(PixelFormat.TRANSLUCENT); // in case : Android SurfaceView闪屏问题

你可能感兴趣的:(Android 坑神)