为何我的ImageButton出现水平与垂直翻转?技术求助
嘿,我来帮你梳理下这个问题可能的原因,结合你用的Android Studio 2.3.3版本,大概率是下面这些情况:
旧版AS的Design视图渲染缺陷
Android Studio 2.3.3是挺老的版本了,当时的Layout Editor(也就是你说的Design标签页)在渲染drawable的变换属性(比如翻转)上存在不少不完善的地方。你在代码里设置的边距内drawable翻转,Design视图可能没正确解析这个属性,所以显示和代码不一致,但实际运行起来应该是正常的。AS的资源缓存未更新
有时候Android Studio会缓存已经加载过的drawable资源,当你修改了drawable的显示属性后,缓存没及时刷新,导致Design视图还停留在旧的显示状态。你可以试试清理缓存:点击File -> Invalidate Caches / Restart,重启AS后再看布局,应该能解决缓存导致的显示问题。布局属性的解析逻辑差异
如果你给这个ImageButton同时设置了多个和drawable相关的属性(比如同时用了android:src和android:background,或者给边距内的drawable设置翻转时用了某些旧版视图不支持的属性),Design视图对这些属性的解析顺序和运行时不一样,就会出现显示偏差。你可以检查下第31行的代码,看看是用android:scaleX="-1"这类属性,还是用了RotateDrawable来实现翻转,旧版Design视图对部分变换属性的支持有限。
另外,建议你把app运行到真机或者模拟器上验证下实际显示效果,如果实际运行和代码预期一致,那基本就是Design视图的渲染bug了——升级Android Studio到较新的版本就能彻底解决这类问题,毕竟2.3.3之后的版本对Layout Editor做了大量的优化和修复。
内容的提问来源于stack exchange,提问作者TimSim

