首页 > 代码库 > CSharp程序员学Android开发---3.Android内部元素不填充BUG

CSharp程序员学Android开发---3.Android内部元素不填充BUG

  最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的。 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的。

项目历时一个多月,4个人开发,最终行成一个可用的Demo,整体效果还非常不错。这其中借鉴了网上的“仿网易客户端的Demo”还有就是学习《疯狂Android》,收获颇多,这里利用几篇文章做一个项目经验总结,还有就是更多的从C#

程序员的观点来理解Android的一些异同之处。

 

文章目录:

CSharp程序员学Android开发---1.初识AndriodIDE,掌握工具使用

CSharp程序员学Android开发---2.个人总结的快捷键

CSharp程序员学Android开发---3.Android内部元素不填充BUG

 

 

 案例:Layout Error:

  首先说明一下,这个问题是项目开发中遇到的难点之一,Baidu中的解决方案并不多,最终是泡在StackOverFlow上找到了答案。

  图中的红色部分是图片本应该填充的部分,但未填充而显示了背景红色,右侧的两条蓝色线条也是如此。相信很多人都遇到了这个问题,所以不想多说了,元素属性已经是fill_parent或者match_parent,可见在某些情况下fill_parent会无效。

  最后,欣喜的是在几个小时的尝试,Search之后终于找到了问题,这个是Layout的一个bug,已经有人提交到Android的官方,大概是问题出在,某些情况下控件没有刷新自身大小导致这样的结果。

  以下是解决步骤:
        1. 将fill_parent替换成match_parent
        2. 在ImageView中设置参数 android:adjustViewBounds="true" 和 android:scaleType="fitXY" ,建议所有ImageView都设置上。
            或  img.setScaleType(ScaleType.FIT_XY);  img.setAdjustViewBounds(true);

      最终,所有图片均真正的“填充”了,其原理是强制图片刷新自己,可能这样会导致一些效率问题。

      

 

 

引用

 BUG:当布局中其中一个控件为GONE时布局有误的解决办法:http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html
 BUG:LinearLayout中元素不fillBUG: http://stackoverflow.com/questions/5403970/imageview-adjustviewbounds-does-not-work-with-layout-height-fill-parent
                          http://stackoverflow.com/questions/16462407/android-imageview-from-url-wont-fill-parent-in-listview

 

CSharp程序员学Android开发---3.Android内部元素不填充BUG