• 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);
        }

        未完待续。。。

  • 相关阅读:
    【深度学习】吴恩达网易公开课练习(class1 week2)
    【深度学习】吴恩达网易公开课练习(class1 week3)
    【python】内存调试
    【python】threadpool的内存占用问题
    Druid: A Real-time Analytical Data Store
    Mesa: GeoReplicated, Near RealTime, Scalable Data Warehousing
    Presto: SQL on Everything
    The Snowflake Elastic Data Warehouse
    Guava 库
    Java Annotation
  • 原文地址:https://www.cnblogs.com/wangshuaiandroid/p/5339991.html
Copyright © 2020-2023  润新知