键盘事件

在项目的AndroidManifest.xml文件中界面对应的里加入:

  1. android:windowSoftInputMode=”stateVisible|adjustResize” 屏幕整体上移,stateVisible是自动显示软键盘
  2. android:windowSoftInputMode=”adjustPan” 覆盖屏幕,不会上移屏幕,这个样子好像不能滑动
    1. "stateUnspecified" 软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是为了软件盘行为默认的设置。
    2. "stateUnchanged" 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。
    3. "stateHidden" 当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity
    4. "stateAlwaysHidden" 软键盘总是被隐藏的,当该Activity主窗口获取焦点时。
    5. "stateVisible" 软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。
    6. "stateAlwaysVisible" 当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity
    7. "adjustUnspecified" 它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。
    8. "adjustResize" Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间。
    9. "adjustPan" Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。

TextView

使用代码动态设置Drawable图片

  1. TextView textDrawable = (TextView) findViewById(R.id.text_drawable);
  2. Drawable drawableLeft = getResources().getDrawable(R.drawable.ic_launcher);
  3. textDrawable.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, null, null, null);

空格

  1.   == 普通的英文半角空格
  2.   ==   ==   == no-break space (普通的英文半角空格但不换行)
  3.   == 中文全角空格 (一个中文宽度)
  4.   ==   == en空格 (半个中文宽度)
  5.   ==   == em空格 (一个中文宽度)
  6.   == 四分之一em空格 (四分之一中文宽度)相比平时的空格( ),nbsp拥有不间断(non-breaking)特性。即连续的nbsp会在同一行内显示。即使有100个连续的nbsp,浏览器也不会把它们拆成两行。

TextView自动缩放

  1. app:autoSizeTextType="uniform" 使用特性
  2. app:autoSizeMinTextSize="12sp" 最小的size
  3. app:autoSizeMaxTextSize="100sp" 最大size
  4. app:autoSizeStepGranularity="2sp" 每次缩小多少
  5. text.setAutoSizeTextTypeUniformWithConfiguration(2, 28, 2, TypedValue.COMPLEX_UNIT_DIP);

富文本

  1. Html.fromHtml(mData.getAnswer())

EditText

键盘回车事件

  1. android:imeOptions="actionSearch"
  2. android:singleLine="true"

Edittext焦点问题

  1. android:focusable="true"
  2. android:focusableInTouchMode="true"

键盘搜索

  1. mKey.setOnEditorActionListener((v, actionId, event) -> {
  2. if (actionId == EditorInfo.IME_ACTION_SEARCH) {
  3. String s = mKey.getText().toString();
  4. if (StringUtils.isEmpty(s)){
  5. showMsg("请输入商品名称");
  6. return false;
  7. }
  8. key = StringUtils.null2Length0(s);
  9. KeyboardUtils.hideSoftInput(mContext);
  10. initData();
  11. return false;
  12. }
  13. return true;
  14. });

View

重绘

  1. 推荐先调用requestLayout方法再调用invalidate方法。

    子View可以超出父View

    1. android:clipChildren="false"
    2. android:clipToPadding="false"

    android View 绘制完成监听

    1. //view重绘时回调
    2. view.getViewTreeObserver().addOnDrawListener(new OnDrawListener() {
    3. @Override
    4. public void onDraw() {
    5. // TODO Auto-generated method stub
    6. }
    7. });
    8. //view加载完成时回调
    9. view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    10. @Override
    11. public void onGlobalLayout() {
    12. // TODO Auto-generated method stub
    13. }
    14. });

    RecyclerView

    设置gridLayoutManager占用几列

    1. mAdapter.setSpanSizeLookup((gridLayoutManager, position) ->
    2. data.getAllCity().get(position).getType()
    3. );

    ViewPager切换时为什么会自动跳到recyclerView的位置

    1. <RelativeLayout
    2. android:layout_width="match_parent"
    3. android:layout_height="match_parent"
    4. android:descendantFocusability="blocksDescendants">
    5. <android.support.v7.widget.RecyclerView
    6. android:layout_width="match_parent"
    7. android:layout_height="match_parent"
    8. android:overScrollMode="never"/>
    9. </RelativeLayout>

    RecyclerView如何去掉上拉刷新和下拉加载的阴影

    1. RecyclerView.setOverScrollMode(View.OVER_SCROLL_NEVER);

    BottomSheetDialogFragment

    设置背景半透明

    1. dialog.getWindow().findViewById(R.id.design_bottom_sheet)
    2. // #00ffffff
    3. .setBackgroundResource(R.color.tm);

    WebView

    NestedScrollView与WebView嵌套

    1. // 放到NestedScrollView父布局
    2. android:descendantFocusability="blocksDescendants"
    3. android:fillViewport="true"

    loadDataWithBaseURL图片自适应

    ```java private String getNewContent(String htmltext) { Document doc = Jsoup.parse(htmltext); Elements elements = doc.getElementsByTag(“img”); for (Element element : elements) {

    1. element.attr("width", "100%").attr("height", "auto");

    } return doc.toString(); } public static final String HEAD = “<!DOCTYPE html>\n” + “\n” + “ \n” + “ \n” + “ \n” + “ \n” + “ \n” + “ \n” + “ \n” + “ \n” + “ \n” + “ “;

public static final String END = “\n” + ““;

  1. <a name="kchjM"></a>
  2. # 富文本字符串
  3. <a name="GjgLR"></a>
  4. ## 点击事件样式
  5. ```java
  6. new ClickableSpan() {
  7. @Override
  8. public void onClick(View widget) {
  9. // bean.getUid();
  10. }
  11. @Override
  12. public void updateDrawState(TextPaint ds) {
  13. //文字的颜色
  14. ds.setColor(0xff00A4FF);
  15. //是否设置下划线
  16. ds.setUnderlineText(false);
  17. }
  18. }

NestedScrollView

子控件实现 match_parent效果

  1. android:fillViewport="true"

Drawable

修改背景色

  1. GradientDrawable skinDrawable = (GradientDrawable) JfResourceUtil.getSkinDrawable(R.drawable.study_dialog_analysis_title);
  2. skinDrawable.setColor(JfResourceUtil.getSkinColor(R.color.frame_gray_background_color));

其他

客服qq

  1. String url="mqqwpa://im/chat?chat_type=wpa&uin=123456";
  2. startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

Android 6.0 中引入了是否允许网络使用明文传输的配置:

  1. <application android:usesCleartextTraffic=["true" | "false"]>