Android开发中一些常见的问题解决方案

     分享一下自己开发中遇到的一些常见问题及解决方案,方面以后快速开发少走弯路,也可以供大家一起学习。

 

1、开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,
常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,
可能会发生点击每一个item的时候没有反应,无法获取的焦点。

原因:

      多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),
此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

解决方案:

    在布局中设置 android:descendantFocusability="blocksDescendants"

2、ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起冲突的问题

/**  
     * 重新计算ListView的高度,解决ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起冲突的问题  
     * @param listView  
     */  
    public void setListViewHeight(ListView listView) {    
            
        // 获取ListView对应的Adapter    
        
        ListAdapter listAdapter = listView.getAdapter();    
        
        if (listAdapter == null) {    
            return;    
        }    
        int totalHeight = 0;    
        for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目    
            View listItem = listAdapter.getView(i, null, listView);    
            listItem.measure(0, 0); // 计算子项View 的宽高    
            totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度    
        }    
        
        ViewGroup.LayoutParams params = listView.getLayoutParams();    
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));    
        listView.setLayoutParams(params);    
    }    

在scrollview里面嵌套了一个listview ,通过设置一个方法设置了listview的高度 现在的情况就是进到这个界面的时候看到的不是最上面 而是中间 ,该问题的解决办法为:
mScrollView.smoothScrollTo(0,20);
如此以上代码还是无效, 在代码里去掉listview的焦点 lv.setFocusable(false),再试下就可以了;
或者。。。
跟EditText一样,在父元素的属性下面下下面这两行即可,不用代码设置。亲测可用。
android:focusableInTouchMode="true"
android:focusable="true"

3、分享自己的app

    /**
     * 分享一个应用程序
     */
    private void shareApplication() {
        // Intent { act=android.intent.action.SEND typ=text/plain flg=0x3000000 cmp=com.android.mms/.ui.ComposeMessageActivity (has extras) } from pid 256
        Intent intent = new Intent();
        intent.setAction("android.intent.action.SEND");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, "推荐您使用一款软件,名称叫:"+appInfo.getName());
        startActivity(intent);
    }

    未完待续。。。

posted @ 2016-03-31 09:47  有丶丶小帅  阅读(1179)  评论(0编辑  收藏  举报
Live2D