标签: android-compatibility

android-support-v7-appcompat和android-support-v4之间的区别

我想知道android-support-v4.jarandroid-support-v7-appcompat.jar之间的区别.如果我想在我的应用程序中添加appcompat Action Bar,我需要添加android-support-v7-appcompat.jarandroid-support-v4.jar,或者只添加android-support-v7-appcompat.jar.

另外,android-support-v13.jar有appcompat吗?

android android-compatibility android-4.0-ice-cream-sandwich android-support-library android-actionbar-compat

146
推荐指数
5
解决办法
7万
查看次数

在前Lollipop崩溃时使用Android矢量Drawables

我在Lollipop之前使用android中的矢量drawables,这些是我的一些库和工具版本:

  • Android Studio:2.0
  • Android Gradle插件:2.0.0
  • 构建工具:23.0.2
  • Android支持库:23.3.0

我在我的应用级别添加了此属性 Build.Gradle

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
   }  
}
Run Code Online (Sandbox Code Playgroud)

还值得一提的是,我使用了一个额外的drawable,如Android官方博客(此处链接)中所述的LayerDrawable(layer_list),用于设置外部矢量绘图的drawablesapp:srcCompat

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/search"/>
</level-list>
Run Code Online (Sandbox Code Playgroud)

你会发现在app之外直接引用矢量drawable:srcCompat将在Lollipop之前失败.但是,AppCompat确实支持在另一个可绘制容器(如StateListDrawable,InsetDrawable,LayerDrawable,LevelListDrawable和RotateDrawable)中引用它们时加载矢量drawable.通过使用此 间接,您可以在TextView的android:drawableLeft属性中使用向量drawable,这通常不能支持向量drawable.

当我使用的app:srcCompat一切工作正常,但当我使用时:

android:background
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableBottom
Run Code Online (Sandbox Code Playgroud)

ImageView,ImageButton,TextViewEditText到棒棒糖之前,它引发厚望:

Caused by: android.content.res.Resources$NotFoundException: File res/drawable/search_toggle.xml from drawable resource ID #0x7f0200a9
Run Code Online (Sandbox Code Playgroud)

android vector android-compatibility android-support-library android-drawable

81
推荐指数
9
解决办法
5万
查看次数

在fragmentpageradapter中重用片段

我有一个浏览片段的viewpager.我的FragmentPagerAdapter子类在getItem方法中创建了一个看似浪费的新片段.是否有一个FragmentPagerAdapter相当于convertViewlistAdapter,使我重新使用已创建的片段?我的代码如下.

public class ProfilePagerAdapter extends FragmentPagerAdapter {

    ArrayList<Profile> mProfiles = new ArrayList<Profile>();

    public ProfilePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    /**
     * Adding a new profile object created a new page in the pager this adapter is set to.
     * @param profile
     */
    public void addProfile(Profile profile){
        mProfiles.add(profile);
    }

    @Override
    public int getCount() {
        return mProfiles.size();
    }

    @Override
    public Fragment getItem(int position) {
        return new ProfileFragment(mProfiles.get(position));
    }
}
Run Code Online (Sandbox Code Playgroud)

android fragment android-compatibility android-fragments

70
推荐指数
4
解决办法
4万
查看次数

如何确定从Backstack恢复的片段

一直在寻找这个问题但现在无济于事:

如何确定片段是从backstack恢复?我在FragmentActivity中使用兼容性库和ListFragment.选择ListFragment中的项目时,将启动新的片段以替换ListFragment.

我注意到当FragmentActivity暂停时,会调用Fragment的onSaveInstanceState.但是当Fragment通过FragmentTransaction放入后端堆栈时,onSaveInstanceState不会被调用,那么使用null savedInstanceState Bundle调用生命周期方法onCreateView和onActivityCreated.

我问这个是因为我想在创建或恢复Fragment时加载一些数据,但是当用户通过它回来时却不是这样.堆栈中.

我看过如何检查片段是否从后台恢复? 但希望增加更多细节,希望这会引发答案.

编辑:刚刚注意到http://developer.android.com/reference/android/app/Fragment.html#onSaveInstanceState(android.os.Bundle)

但请注意:可以在onDestroy()之前的任何时间调用此方法.在许多情况下,片段可能大部分被拆除(例如放置在没有显示UI的后台堆栈上),但是在其拥有的活动实际上需要保存其状态之前,其状态将不会被保存.

所以onSaveInstanceState绝对是不可能的......

android acl fragment android-compatibility android-support-library

53
推荐指数
4
解决办法
5万
查看次数

什么是appCompat v7中的LinearLayoutCompat?

在Android平台的支持库appCompat v7中,有一个android.support.v7.widget.LinearLayoutCompat类.

有人知道为什么这堂课存在吗?原始的LinearLayout类从API级别1开始存在,所以我不明白为什么有compat版本.

android android-compatibility

38
推荐指数
1
解决办法
9452
查看次数

Android支持包/兼容性库 - 使用v4或v13?

我刚刚阅读了Android支持包/兼容性库的这个描述......

http://developer.android.com/sdk/compatibility-library.html

......这让我有点困惑!它说v13库是v4的超集,但我认为它是另一种方式?

实用:如果我想使用兼容性库,以便我的应用程序可以构建并适用于运行Android 2.2(API 8)到4.0(API 14)及更高版本的手机,那么v4对我来说是否足够?

android android-compatibility android-support-library

31
推荐指数
3
解决办法
2万
查看次数

API级别<11的ObjectAnimator

所以我对android非常感到沮丧,事实上,当你回滚API等级超过11时,一半的东西都不起作用.为什么不像iOS那样容易和做得好?!

我正在使用的问题ObjectAnimators来动画之间的过渡Fragments.它们适用于API等级11及以上的任何物品.一旦我将构建目标更改为小于11,我就会遇到问题,说它无法找到属性的资源标识符,例如propertyNamevalueTypexml文件中的属性.

问题 我应该使用什么来动画我Fragment将在API级别> 7上工作的转换.

提前致谢.

android android-compatibility

28
推荐指数
1
解决办法
2万
查看次数

Android,什么是不使用支持库时等效的DrawerLayout类?

由于我的最低SDK版本是14,我不想在我的应用程序中添加支持库.根据Android在DrawerLayout页面上的说法,此视图组在support library(android.support.v4.widget)中定义.

DrawerLayout如果我不添加支持库,是否有任何等效的类?谢谢.

android android-compatibility android-support-library drawerlayout

20
推荐指数
1
解决办法
2156
查看次数

使用Android APK 2.2打开硬件加速(如果可用)(例如Android 3+)

我开发了一个Android 3.0应用程序,它运行得很好,但客户端坚持与2.2设备的兼容性.

禁用硬件加速,使用Android兼容包,NIO-backport支持(对于任务和执行程序)和一些View方法的重新实现我能够移植我的Android 2.2应用程序并且工作得非常好,但是如果我将这个apk运行到更新的设备的性能非常慢,所以我想知道如何启用硬件加速,但仍然使用我的2.2 APK.

android android-manifest apk android-hardware android-compatibility

17
推荐指数
1
解决办法
2万
查看次数

在API版本16之前检测SeekBar中的拇指位置

基本上,我需要检测SeekBar中进度何时发生变化,并在拇指顶部绘制一个文本视图,指示进度值.

我这样做是通过实现一个OnSeekBarChangeListenerpublic void onProgressChanged(SeekBar seekBar, int progress, boolean b)方法,我打电话Rect thumbRect = seekBar.getThumb().getBounds();确定拇指的位置.

这非常好用,但显然getThumb()只能在API级别16+(Android 4.1)中使用,导致NoSuchMethodError早期版本.

知道如何解决这个问题吗?

android seekbar android-layout android-compatibility

14
推荐指数
1
解决办法
9037
查看次数