android疑难杂症

getMeasuredHeight()与getHeight的区别

推荐使用getMeasureHeight().
在当屏幕可以包裹内容的时候,他们的值相等,只有当view超出屏幕后,才能看出他们的区别:getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的大小

AndroidStudio项目可以Build但Run出错

File → Settings → Build, Execution, Deployment → Instant Run
关闭 Enable Instant Run

去除ListView默认出现黑色背景的方法

1、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来
解决:在XML中加入
android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″
2、listview的上边和下边有黑色的阴影
解决: android:fadingEdge=”none”
3、修改listview的Item默认选择时的黄色背景
解决:在java文件中使用listview.setSelector()方法,或使用如下代码
android:listSelector="#00000000"//这样写是透明的,也可加入Drawable图片
4、lsitview的每一项之间需要设置一个图片做为间隔
解决: android:divider=”@drawable/list_driver”

Instant Run

根据项目的不同,他可能会显著减少初始构建和安装时间。任何在代码更改后变为可到达的方法都会显示为新添加到程序中,达到即时运行热切换的目的。

startActivityForResult不回调的问题

如果用负值的requestCode和调用startActivity是一样的,所以代码不走startActivityForResult而是startActivity

   /**
     * Same as calling {@link #startActivityForResult(Intent, int, Bundle)}
     * with no options.
     *
     * @param intent The intent to start.
     * @param requestCode If >= 0, this code will be returned in
     *                    onActivityResult() when the activity exits.
     *
     * @throws android.content.ActivityNotFoundException
     *
     * @see #startActivity 
     */
    public void startActivityForResult(Intent intent, int requestCode) {
        startActivityForResult(intent, requestCode, null);
    }

EditText在java代码中设置digits属性

EditText可以在xml中设置digits属性来限制用户的输入内容。如下面可以限制用户只输入数字

android:digits="1234567890"
editText.setKeyListener(DigitsKeyListener.getInstance("0123456789"));

ActivityGroup里面装的子Activity不能使用OnActivityResult()方法

ActivityGroup的OnActivityResult()方法子Activity是捕获不到的,可以在ActivityGroup 重写OnActivityResult()方法。
再发送Intent的时候,需要用getParent()来调用startActivityForResult:

getParent().startActivityForResult(intent,REQUEST);

第二步,重写OnActivityResult()方法,需要获得当前的子Activity,并进行强转之后,调用子Activity的OnActivityResult()方法:

@Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        // 向下传递  
    YourActivity currentActivity = (YourActivity) getLocalActivityManager()  
            .getCurrentActivity();  
    currentActivity.onChildActivityResult(requestCode, resultCode, data);  
    }  

Error:Could not download junit.jar (junit:junit:4.12): No cached version available for offline mode

1:使用代理ip,此处我使用的是小飞机,使用全局代理即可.
2:报错后找到File - Other settings - Default settings,选择Build Tools - Gradle去掉"offline work"选项勾点击 “Ok”.

Activity、FragmetActivity、AppconpatActivity区别

fragment是3.0以后的东西,为了在低版本中使用fragment就要用到android-support-v4.jar兼容包

1、fragmentactivity 继承自activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。 
2、当然3.0之后你就可以直接继承自Activity,并且在其中嵌入使用fragment了。 
3、获得Manager的方式也不同 
3.0以下:getSupportFragmentManager() 
3.0以上:getFragmentManager()
4、AppconpatActivity extents FragmetActivity,FragmetActivity extends Activity,强烈建议使用AppconpatActivity获得最大的api集合

查看keystore的签名

keytool -list -keystore D:\Desktop\app_key
keytool -list -v -keystore e:\debug.keystore -storepass xxx(密匙)

Mac通过aapt解析查看apk文件版本等信息

配置aapt环境路径

  • 终端中输入:open .bash_profile
  • 打开此文件后输入:export PATH=${PATH}:~/Library/Android/sdk/build-tools/25.0.3/aapt
  • 使用更新后的修改 source .bash_profile
  • 使用 aapt dump badging <apk文件路径>

android.support.v4.app.Fragment和 android.app.Fragment的区别

1.最低支持版本不同
android.app.Fragment 兼容的最低版本是android:minSdkVersion=“11” 即3.0版
android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion=“4” 即1.6版

2.需要导jar包
fragment android.support.v4.app.Fragment 需要引入包android-support-v4.jar

3.获取manager的方法不同
android.app.Fragment使用getFragmentManager()
android.support.v4.app.Fragment使用getSupportFragmentManager()

注意:
android.support.v4.app.Fragment不能使用标签,而且想用fragment+viewpager只能使用android.support.v4.app.Fragment,因为FragmentPagerAdapter就是android.support.v4.app.Fragment才有。所以强烈推荐使用android.support.v4.app.Fragment

SSL peer shut down incorrectly

因为墙的原因导致的。这时候我们就需要配置镜像来解决这个问题。(为了提高jar包的下载速度也可以配置)配置的方法就是在根build.gradle中添加镜像仓库,一般我们选择阿里的 http://maven.aliyun.com/nexus/content/groups/public/完整的如下所示

buildscript {

    repositories {
        google()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

allprojects {
    repositories {
        google()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Resolved versions for app (26.1.0) and test app (27.1.1) differ。包冲突解决在 build.gradle 添加

android {
    ...
}

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'
}

dependencies {
    ...
}

Android Studio添加aar

在module 里面的build.gradle 的根目录添加

repositories{
    flatDir {
    dirs 'libs'
   }
}

在module 里面的build.gradle 的根目录的 dependencies 标签里面添加

compile(name:'SDK-release', ext:'aar')

推送通知和透传消息)的区别

通知:发送后会在系统通知栏收到展现,同时响铃或振动提醒用户。
消息:以透传的形式传递给客户端,无显示,发送后不会在系统通知栏展现,第三方应用后需要开发者写代码才能看到。

listview的属性

android:divider="@null" //去掉分割线
android:listSelector="@android:color/transparent" //去掉点击渐变色
android:scrollbars=“none” //去掉进度条
android:dividerHeight=“10dp” //设置item间隔
android:cacheColorHint="#00000000" //解决异常变黑问题

android:descendantFocusability=“blocksDescendants” //这个放在列表的第一个父布局,解决自动滑动问题

ScrollView的属性

当ScrollView嵌套LinearLayout,在某些手机上下面会留白,问题的解决办法是在第一层LinearLayout里面嵌套多个

LinearLayout,最重要的是将ScrollView中android:fillViewport设置为true。

当ScrollView里的元素想填满ScrollView时,使用"fill_parent"是不管用的,必需为ScrollView设置:

android:fillViewport=“true”。

当ScrollView没有fillVeewport=“true”时, 里面的元素(比如LinearLayout)会按照wrap_content来计算(不论它是否设

了"fill_parent"),而如果LinearLayout的元素设置了fill_parent,那么也是不管用的,因为LinearLayout依赖里面的元素,而

里面的元素又依赖LinearLayout,这样自相矛盾.所以里面元素设置了fill_parent,也会当做wrap_content来计算。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流星雨在线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值