每次更新一打开发小技巧O(∩_∩)O~

1. 设置Textview中文字与图片的padding值

android:drawablePadding="10dp"

2. 监听SharedPreferences改变

  • registerOnSharedPreferenceChangeListener
sp1.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {    @Override    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {           // do any thing you want     }});

3. TextView自动换行文字,排版混乱的解决方法

将textview中的字符全角化

public static String ToDBC(String input) {     char[] c = input.toCharArray();     for (int i = 0; i< c.length; i++) {         if (c[i] == 12288) {           c[i] = (char) 32;           continue;         }if (c[i]> 65280&& c[i]< 65375)            c[i] = (char) (c[i] - 65248);         }     return new String(c);  }  

或者直接使用word等工具转换所选文字

4. Fragment中的onActivityResult不被调用的解决办法
  • 检查Fragment中的startActivityForResult的调用方式。请确保不要使用getActivity().startActivityForResult方法,而是要直接使用startActivityForResult
  • 在基类BaseActivity继承FragmentActivity,重写onActivityResult方法
    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        FragmentManager fm = getSupportFragmentManager();        int index = requestCode >> 16;        if (index != 0) {            index--;            if (fm.getFragments() == null || index < 0                    || index >= fm.getFragments().size()) {                Log.w(TAG, "Activity result fragment index out of range: 0x"                        + Integer.toHexString(requestCode));                return;            }            Fragment frag = fm.getFragments().get(index);            if (frag == null) {                Log.w(TAG, "Activity result no fragment exists for index: 0x"                        + Integer.toHexString(requestCode));            } else {                handleResult(frag, requestCode, resultCode, data);            }            return;        }    }    /**     * 递归调用,对所有子Fragement生效     *     * @param frag     * @param requestCode     * @param resultCode     * @param data     */    private void handleResult(Fragment frag, int requestCode, int resultCode,                              Intent data) {        frag.onActivityResult(requestCode & 0xffff, resultCode, data);        List frags = frag.getChildFragmentManager().getFragments();        if (frags != null) {            for (Fragment f : frags) {                if (f != null)                    handleResult(f, requestCode, resultCode, data);            }        }    }

5. 设置编辑框不可编辑

            etPhoneNum.setFocusable(false);            etPhoneNum.setFocusableInTouchMode(false);

6. ScrollView不满全屏留白问题

为ScrollView添加如下属性即可:

android:fillViewport="true"

7. 动态修改TextView的图片

setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top, Drawable right, Drawable bottom)

如果想手动设置大小的话就要用setCompoundDrawables,事先要给Drawable设置setBounds。
如果按照原有比例大小显示图片就使用setCompoundDrawablesWithIntrinsicBounds

8. 在当前页关闭上一页的activity

在要关闭的某个activity设置单例

    public static PreviousActivity previousActivity;    public static PreviousActivity getInstance() {            return previousActivity;    }    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        previousActivity = this;    }

在当前页拿到实例调用finish

PreviousActivity.getInstance().finish();

9. 在fragment调用所在的activity的方法

                        MainActivity mainActivity = (MainActivity) getActivity();                        mainActivity.done();

10. SharedPreferences也可以存储集合

    public static Set getValueSet(Context context, String key){        SharedPreferences prefs = getNewSharedPreferences(context);        return prefs.getStringSet(key, null);    }    public static void setValueSet(Context context, String key, Set value){        Editor editor = getNewSharedPreferences(context).edit();        editor.putStringSet(key, value);        editor.commit();    }

这里putStringSet修改数据,需要做一层额外的浅拷贝,然后对拷贝后的 Set 进行修改,再把结果通过 putStringSet 写回到 SharedPreferences

Set list = getValueSet(Config.KEY);Set result = new HashSet<>(list);if (true) {  result.add(a);} else {  result.remove(a);}setValueSet(Config.KEY, result);

11. fragment隐藏或者显示数据刷新

    @Override    public void onHiddenChanged(boolean hidden) {        super.onHiddenChanged(hidden);        if (!hidden){            initData();        }else{            ...        }    }

new frament对象初始化数据时仍然需要在onCreateView等方法中进行

12. 更新 Android 6.0 之后无法找到 org.apache.http 包

在gradle中添加如下代码

android {    useLibrary 'org.apache.http.legacy'}

其他相关文章

Android 开发经验Tips(1) http://www.jianshu.com/p/c2c8ccd53636
Android 开发经验Tips(2) http://www.jianshu.com/p/21bc9c2a6563

更多相关文章

  1. Android AndroidManifest.xml 四大组件注册方法
  2. Android中onClick的四种实现方法
  3. android中获取IP的方法
  4. Android NDK 工具链的使用方法(Standalone Toolchain)
  5. 使用反射获取Android中隐藏的方法
  6. android 按钮效果的两种实现方法
  7. Android设置桌面背景图片的方法
  8. android launcher使hotseat item显示标题文字
  9. [置顶] 找到一个在Android上创建阻塞式模态对话框的方法

随机推荐

  1. 浅谈RxJava与2.0的新特性
  2. okhttp的应用详解与源码解析--http的发展
  3. Android颜色选择器
  4. android的camera
  5. android 请求数据有值,赋值时报错:空指针
  6. 安卓按比例布局,layout_weight用法
  7. 【android】Android(安卓)多个APK共享数
  8. Android适配器Adapter的学习(转载)
  9. Android Eclipse JNI 调用 .so文件加载问
  10. Android Preference 须知