Android的一些坑

1、 LinearLayout中的orientation & gravity

  • 当LinearLayout布局中设置orientation=”vertical”属性:如果子组件设置layout_gravity=”center_vertical”是无效的;
  • 如果LinearLayout中设置gravity=”center_vertical”是可以起到作用将子组件垂直居中的。水平布局同理

2、获取xml资源文件中定义的数组

getResources().getStringArray(R.array.city)

3、列表里的CheckBox(不理解)

4、布局里的ListView|GridView抢占焦点

Scrollview里嵌套Gridview,Gridview抢焦点问题(显示布局的时候老是先从Gridview的第一个item显示)
解决方法:在获取inflate view之后,代码给GridView.setFocusable(false)就可以了

5、去除Listview滚动背景变黑,item点击默认背景

listview默认背景和系统窗口一样是透明的,如果给listview加上背景图片,或者背景颜色时,滚动时listview会黑掉,因为滚动时,列表里面的view重绘用的依旧是系统默认的透明色,颜色值为#FF191919
解决办法:
- 调用listview的setCacheColorHint(0),颜色值设置为0
- 设置xml文件中listView的属性 Android:cacheColorHint=”#00000000”,滚动时,重绘View的时候就不会有背景颜色。
android:listSelector=”#00000000”
进行上面的设置之后,ListView点击item时就没有任何现象了

6、开启Android系统程序设置页面

Intent intent = new Intent();intent.setClassName("com.android.settings","com.android.settings.ManageApplications");intent.setAction("android.intent.action.MAIN");try {    startActivity(intent);} catch (Exception e) {    e.printStackTrace();}  

7、禁止EditText自动获取布局焦点

解决之道:在EditText的父级控件中找一个,设置成
android:focusable=”true”
android:focusableInTouchMode=”true”

8、RadioButton设置默认选中

如果RadioGroup中设置默认选中一个RadioButton后,在选择时会选中两个的问题
解决方法:
不需要设置RadioButton的默认选中, 这样会使RadioButton一直处于选中状态.
把radioButton.setCheck(true);
更改为radioGroup.check(radioButton.getId());

9、实现ImageView宽度填满屏幕,高度自适应

1、自定义ImageView重写View的onMeasure方法

public class ResizableImageView extends ImageView {      public ResizableImageView(Context context) {          super(context);      }      public ResizableImageView(Context context, AttributeSet attrs) {          super(context, attrs);      }      @Override      protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){          Drawable d = getDrawable();          if(d!=null){              // ceil not round - avoid thin vertical gaps along the left/right edges              int width = MeasureSpec.getSize(widthMeasureSpec);              //高度根据使得图片的宽度充满屏幕计算而得              int height = (int) Math.ceil((float) width * (float) d.getIntrinsicHeight() / (float) d.getIntrinsicWidth());              setMeasuredDimension(width, height);          }else{              super.onMeasure(widthMeasureSpec, heightMeasureSpec);          }      }  }  

2、设置ImageView的属性

//宽度填满屏幕android:layout_width=”match_parent”android:scaleType=”fitXY”android:layout_height=”wrap_content”//保持比例,一定要设置android:adjustViewBounds=”true”

10、主题文件设置的颜色

http://blog.csdn.net/chengtaoyan/article/details/79401751

11、Android GridView组件如何去除四周的空隙

设置GridView的android:listSelector属性 android:listSelector=”@null” 设置后四周空隙就消除了

12、隐藏ListView滚动条

setScrollbarFadingEnabled(true);
//不活动的时候隐藏,活动的时候显示

setVerticalScrollBarEnabled(true);
//不活动的时候隐藏,活动的时候也隐藏

13、android:parentActivityName

一个Activity在manifet里声明了Android:parentActivityName;这时候通过Activity左上角的返回按钮点击返回,启动声明的父Activity,并且总会先调用父Activity的OnDestroy方法,点击子Activity的左上角返回按钮的时候,调用逻辑如下:
MainActivity.onDestroy();
MainActivity.onCreate(null);
MainActivity.onStart();
解决方案是: 为设置MainActivity属性android:launchMode=singleTop

顺便脑补android:parentActivityName的作用,就是为了左上角给子Activity加一个返回按钮,具体信息如下:
Android 4.1 提高性能、增强用户体验
  App 栈导航:通过设置 android:parentActivityName 改变回退栈的内容,如果栈中没有 parentActivity,则合成栈,通过
onPrepareNavigateUpTaskStack() 改变 parentActivity 中的内容。

14、ScrollView 显示不全

有时候 ScrollView 嵌套 LinearLayout 时会有显示不全的情况,这个时候应该看看 ScrollView 的父布局是不是用的 CoordinatorLayout。
当外部用 CoordinatorLayout 时,内部应该用 NestedScrollView ,不然会产生不确定的 bug。
同样在 CoordinatorLayout 内部使用 ViewPager & TabLayout 来显示不同的 Fragment 时,如果 Fragment 内使用 ScrollView 也会有显示不全的情况。

15、OOM 内存溢出

当你在测试应用时,如果在部分机型上运行正常,而在部分机型上出现 OOM ,除了对应用再次做各种优化外,你可以在配置文件中加上:

16、Toolbar 左侧有空白(内边距)

引起原因:
在V7包下,Wiget.AppCompat.Toolbar的parent中,contentInsetStart(默认的有值)这个属性就是引起自定义ActionBar不能完全填充的原因。

  

然后在AppStyle中(一定在这,单独在Toolbar的style中设置不起作用)重写Toolbar的属性:

"toolbarStyle">@style/ClubToolbar  

17、ListView、RecyclerView、ScorllView、Viewpager 等等,取消顶部半圆形的拉力纹

android:overScrollMode=”never”

18、.9图片

左边和上边的黑边表示拉伸区域。右边和下边的黑边表示填充区域

更多相关文章

  1. 约束布局ConstraintLayout的使用你知道吗
  2. Android -- android activity 各种布局方式以及相关参数
  3. 关于自定义布局,xml中配置属性(attrs)
  4. android基础之RelativeLayout布局
  5. (一)Android背景知识
  6. ScrollView属性fillViewport解决android布局不能撑满全屏的问题

随机推荐

  1. 不用***,如何查看国外技术文章
  2. Redis数据迁移的4种方法
  3. Python到底怎么读?
  4. 多线程学习(二) 多线程创建4种方式
  5. 多线程学习(一) 线程与进程的理解
  6. Error reading device /dev/bakupvg/baku
  7. 个人理解简单工厂模式和策略模式的区别
  8. 多线程学习(三)多线程开发带来的问题与解决
  9. 为什么说Python会成为最流行的编程语言?
  10. IPython6.0发布:放弃支持Python2.7