最近公司组织项目组成员开发一个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的更多相关文章

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

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

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

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

  3. .Net程序员学用Oracle系列(1):导航目录

    本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...

  4. .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...

  5. .Net程序员学用Oracle系列(8):触发器、任务、序列、连接

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.触发器 1.1.创建触发器 1.2.禁用触发器 & 启用触发器 & 删除触发器 2.任务 2.1.DBMS_ ...

  6. .Net程序员学用Oracle系列(9):系统函数(上)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.字符函数 1.1.字符函数简介 1.2.语法说明及案例 2.数字函数 2.1.数字函数简介 2.2.语法说明及案例 3.日期 ...

  7. .Net程序员学用Oracle系列(10):系统函数(下)

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...

  8. .Net程序员学用Oracle系列(11):系统函数(下)

    1.聚合函数 1.1.COUNT 函数 1.2.SUM 函数 1.3.MAX 函数 1.4.MIN 函数 1.5.AVG 函数 2.ROWNUM 函数 2.1.ROWNUM 函数简介 2.2.利用 R ...

  9. .Net程序员学用Oracle系列(15):DUAL、ROWID、NULL

    1.DUAL 表 2.ROWID 类型 2.1.利用 ROWID 查询数据 2.2.利用 ROWID 更新数据 3.NULL 值 3.1.NULL 与空字符串 3.2.NULL 与函数 3.3.NUL ...

随机推荐

  1. 消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行 profile 名称无效

    错误:消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行profile 名称无效 原因: 用SA帐户是可以发送邮件的,但换了另外一个帐户后却提示以上错误. 解决 ...

  2. 第八章 高级搜索树 (b4)B-树: 插入

  3. 全国省市区数据库SQL(有可能不是最新的)

    百度云下载地址:https://pan.baidu.com/s/1lStN7tYpwOtpC-r3G2X2sw

  4. vue-awesome-swiper插件

    http://www.cnblogs.com/songrimin/p/6905136.html 这个地址不错 在上一些我的demo代码 第一步安装 npm install vue-awesome-sw ...

  5. Golang之时间格式化,计时器

    地鼠敲下一堆代码,记录着当天的时间 package main import ( "fmt" "time" ) func getTime() { now := t ...

  6. Laravel5.5 使用队列 Queue

    使用队列# 上一章节中我们开发了自动生成 Slug 功能,但是因为我们的需要实时请求百度翻译接口,这将会是一个系统性能隐患. 一般情况下,网络请求会存在各种不确定性,如果请求 API 出现超时情况,或 ...

  7. 人类基因组三代组装: cano

    git clone https://github.com/marbl/canu.git cd canu/src make -j <number of threads> 使用实例: canu ...

  8. 2018.07.17 HAOI2016 找相同字符(SAM)

    传送门 就是给两个字符串,让你求公共字串的个数. 本来大佬们都是用的广义后缀自动机,但我感觉后缀自动机已经可以做这道题了.我们对其中一个字串建出后缀自动机,然后用另外一个后缀自动机在上面统计贡献即可. ...

  9. 浅谈OCR之Tesseract

    光 学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印 ...

  10. 《Linux多线程服务端编程——使用muduo C++网络库》读书笔记

    第一章 线程安全的对象生命期管理 第二章 线程同步精要 第三章 多线程服务器的适用场合与常用编程模型 第四章 C++多线程系统编程精要 1.(P84)11个常用的最基本Pthreads函数: 2个:线 ...