adjustViewBounds 无效的问题

一、解决在RelativeLayout中使用ImageView, adjustViewBounds 无效的问题。

1、 在RelativeLayout中
(1) layout_height设定一个定值如100dp, layout_width设为wrap_content, adjustViewBounds设为true, 无效,无论高度如何调整,宽度依然保持不变,为wrap_content
(2) 反过来,layout_width设定定值,layout_height设为wrap_content, 则设置adjustViewBounds为true,生效,高度会随宽度变化。
2、 在LinearLayout中
无论是定高, 然后宽度wrap_content, 或者是反过来, 全部生效。
3、 解决办法
在RelativeLayout中使用ImageView, 若要adjustViewBounds生效,可以在ImageView外面包裹一层LinearLayout。
4、 说明(关于maxWidth, maxHeight)
(1)以上的验证中,无论adjustViewBounds生效还是未生效, 都没有设置maxHeight或者maxWidth**,这与网上普遍流传的 adjustViewBounds 必须和maxWidth或者maxHeight配合使用 才能生效的结论不符。
(2)而且maxHeight或者maxWidth有其自己的含义,随便拿来用,只怕与本来的设计思路不符。
(3)同时, 我在Android官方文档中也没有看到 必须使用maxWidth or minHeight的说法。

查看关于这块的API文档

二、Scrollview中有EditText,当点击EditText后再滚动Scrollview会出现Scrollview自动回滚到某个位置的情况。

解决办法:

 scrollView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
        scrollView.setFocusable(true);
        scrollView.setFocusableInTouchMode(true);
        scrollView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.requestFocusFromTouch();
                return false;
            }
        });

推荐阅读更多精彩内容