标签: android-appcompat

CardView Corner Radius

有没有办法让CardView只在顶部有一个圆角半径?

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardCornerRadius="10dp"
    >
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-cardview

80
推荐指数
7
解决办法
14万
查看次数

Gradle Build Android项目"无法解决所有依赖项"错误

我正在尝试使用Gradle构建我的第一个项目,我认为我的gradle文件和设置是正确的.

我只使用一个模块和支持V4 + AppCompatBar库.

项目 - build.gradle

allprojects {
    repositories {
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

项目 - settings.gradle

include ':AssignmentTempos21'
Run Code Online (Sandbox Code Playgroud)

主模块 - build.gradle

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 17
    }
}

dependencies {
    compile "com.android.support:support-v4:18.0.+"
    compile "com.android.support:appcompat-v7:18.0.+"
}
Run Code Online (Sandbox Code Playgroud)

带-i标志的控制台输出:

MacBook-Air-de-Cesar-2:AssignmentTempos21 menor$ ./gradlew -i clean assemble
Starting Build
Settings evaluated using settings file '/Users/menor/workspace_android/AssignmentTempos21/settings.gradle'.
Projects loaded. Root …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat gradle android-support-library build.gradle

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

appcompat-v7 v21.0.0导致Android v4.2.2在三星设备上崩溃

我们刚刚更改了应用程序以使用appcompat-v7 support库,以便利用支持操作栏并支持Material主题.使用v21.0.0 of appcompat-v7(以及v21.0.0 of support-v4)我们现在看到的崩溃Google Play和Crashlytics仅来自三星设备runningAndroid v4.2.2 . Here is the stack trace from Google Play and the app appears to crash as soon as theactionbar`显示和/或无效.

java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
at android.support.v7.app.ActionBarActivityDelegateBase.initializePanelMenu(ActionBarActivityDelegateBase.java:991)
at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1041)
at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259)
at android.support.v7.app.ActionBarActivityDelegateBase.access$100(ActionBarActivityDelegateBase.java:80)
at android.support.v7.app.ActionBarActivityDelegateBase$1.run(ActionBarActivityDelegateBase.java:116)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

运行v4.2.2的其他设备和模拟器不会出现此行为.我的理解是,许多Google应用已经在使用此新版本来appcompat显示操作栏.如果这些应用程序没有报告这些设备上的崩溃,那么了解如何避免/修复这些应用将会很有帮助.

我向谷歌报告这是一个错误,但由于它是一个开发问题而被关闭了.虽然我确实同意这可能是这种情况,但我想知道是否/如何使用任何人appcompat-v7 v21.0.0并且不会发生崩溃Samsung 4.2.2 devices …

android proguard android-appcompat samsung-mobile android-4.2-jelly-bean

79
推荐指数
3
解决办法
1万
查看次数

android工具栏popupTheme vs主题

我经常在布局文件中看到工具栏的这个声明:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

为什么有两个与主题相关的属性:主题和弹出主题?

每个人的目的是什么?

android android-appcompat android-support-library android-toolbar

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

创建ActionMode时未调用onPrepareActionMode

我刚刚将我的一个应用程序调整到新的v22.1.1支持和appcompat库,请参阅此处此处了解更多详细信息.当我做一些测试时,我正在使用的ActionModes出现了问题.

当您使用调用启动ActionMode时startSupportActionMode() - 如果您使用现已弃用的ActionBarActivity基类或新的AppCompatActivity基类 - onPrepareActionMode()则不会被调用.

onPrepareActionMode()最初使用时创建ActionMode时,会自动调用先前版本(包括v21.0.3和v22.0.0)startSupportActionMode().

我在2.2,4.4.2和5.0设备上测试了它,所以它似乎不依赖于版本.

有谁知道,如果这是预期的行为,那是在v22.1.1中引入的,还是一个bug?

我发现了这个问题,但这里没有很多反馈......

2015年5月11日编辑:

Android问题跟踪器159527中所述,此问题不仅影响appcompat和支持库的v22.1.x,还影响5.1 Android实现.

目前有两种可能的临时解决方案,一般是:

@Override
public ActionMode startSupportActionMode(final ActionMode.Callback callback) {
  // Fix for bug https://code.google.com/p/android/issues/detail?id=159527
  final ActionMode mode = super.startSupportActionMode(callback);
  if (mode != null) {
    mode.invalidate();
  }
  return mode;
}
Run Code Online (Sandbox Code Playgroud)

和一个'快速和脏'的(当你实例化你的ActionMode时):

final ActionMode actionMode = startSupportActionMode(new MyActionMode());
if(actionMode != null) {
    actionMode.invalidate();
}
Run Code Online (Sandbox Code Playgroud)

如果您不使用appcompat(ActionBarActivity/ AppCompatActivity),则需要替换 …

android android-appcompat android-support-library android-actionmode

78
推荐指数
1
解决办法
4439
查看次数

Android - onAttach(Context)没有为API 23调用

我已将SDK更新到最新版本(API 23),并且onAttach(Activity)不推荐使用片段方法.因此,不是使用该方法,现在我正在使用,onAttach(Context)但是在生命周期中不会调用此方法.活动是AppCompatActivity来自v7 的实例,片段是类Fragment(android.app.Fragment)的实例.

有任何想法如何onAttach在API 23中工作?

我找到了一些可以帮助您理解和解决此问题的答案:

  • 正如我之前提到的,我正在使用来自支持v7(AppCompatActivity)的活动和来自android.app的片段.

  • 为了显示片段,我在活动上使用方法getFragmentManager获取片段管理器,因此片段管理器是来自android.app的> FragmentManager的实例 - >这是问题所在

  • 如果您在具有API 23的设备上运行应用程序(我在AS模拟器上运行它),您将看到将调用onAttach(Context)方法.在FragmentManager显示片段的过程中,在特定时刻调用onAttach(..)方法.使用getFragmentManager(),您将获得可在该设备上运行的Android版本的片段管理器实例(例如API 22,23).如果应用程序在API <23的设备上运行,则onAttach(Context)方法不可用,片段管理器不知道在API 23中有一个方法onAttach(Context),这就是为什么它不被调用对于API <23 - >这种问题的解决方案是使用支持库中的FragmentManager.

  • 解决方案:

    1. 使用getSupportFragmentManager()将强制您使用支持库中的片段.因此,第一个解决方案是使用支持lib中的片段替换所有片段并使用getSupportFragmentManager().

    2. 我已经实现的解决方案是处理2种可能性(1.应用程序在API <23的设备上运行,应用程序在API> = 23的设备上运行).

    不久,在我的实现中,我有一个来自项目的所有片段的基类,我在那里添加了这个代码:

    /*
     * onAttach(Context) is not called on pre API 23 versions of Android and onAttach(Activity) is deprecated
     * Use onAttachToContext instead
     */
    @TargetApi(23)
    @Override
    public final void onAttach(Context context) {
        super.onAttach(context);
        onAttachToContext(context);
    }
    
    /*
     * Deprecated on API 23
     * Use onAttachToContext …
    Run Code Online (Sandbox Code Playgroud)

    android android-appcompat

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

    使用Tab与新ToolBar(AppCompat v7-21)

    我正在使用带有选项卡的SupportActionBar和一个自定义ActionBar主题(使用http://jgilfelt.github.io/android-actionbarstylegenerator/创建),仅在用户展开搜索视图时显示选项卡.

    public boolean onMenuItemActionExpand(MenuItem item) {
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            return true;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我从ActionBar迁移到工具栏.我的应用程序确实需要支持API 9.

    有没有办法使用此代码添加标签?:

    Toolbar toolbar = (Toolbar) findViewById(R.id.new_actionbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    
    Run Code Online (Sandbox Code Playgroud)

    如果可能,我如何使用我的自定义主题或样式工具栏?

    文档说这已被弃用,并建议使用不同类型的导航.但我不知道Android中具有相同功能的任何其他组件.

    一些帮助?

    tabs android android-appcompat android-support-library android-actionbar-compat

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

    什么是使用RecyclerView.Adapter的SortedList <T>?

    Android支持库22.1昨天发布.v4支持库和v7中添加了许多新功能,其中android.support.v7.util.SortedList<T>引起了我的注意.

    据说,SortedList是一种新的数据结构,可以使用RecyclerView.Adapter,维护项目添加/删除/移动/更改的动画RecyclerView.这听起来像一个List<T>ListView,但似乎更先进,更强大.

    那么,SortedList<T>和之间有什么区别List<T>?我怎么能有效地使用它?如果是这样的话,执行SortedList<T>结束的List<T>是什么?有人可以发一些样品吗?

    任何提示或代码将不胜感激.提前致谢.

    android sortedlist android-appcompat android-recyclerview

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

    找不到与给定名称"@ style/Theme.AppCompat.Light"匹配的资源

    我已经解决了这个问题几个小时了.从github下载存储库后,任何.xml文件中唯一的错误是:

    No resource found that matches the given name '@style/Theme.AppCompat.Light'
    
    Run Code Online (Sandbox Code Playgroud)

    代码非常简单,但我没有找到一个直截了当的答案,关于如何缓解错误.

    这是代码(在文件res/values/styles.xml中):

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
        <!-- API 14 theme customizations can go here. -->
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

    该项目位于:https://github.com/erikswed/InstaChatX 我在Windows上,使用Eclipse Kepler

    android android-appcompat

    68
    推荐指数
    2
    解决办法
    19万
    查看次数

    Widget.AppCompat.Button colorButtonNormal显示为灰色

    我有values:styles.xml:

    <style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
        <item name="colorButtonNormal">@color/my_color</item>
        <item name="android:textColor">@android:color/white</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

    values-v21:styles.xml与:

    <style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button">
          <item name="android:colorButtonNormal">@color/my_color</item>
          <item name="android:textColor">@android:color/white</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

    和app风格搭配

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
          <item name="android:buttonStyle">@style/AppTheme.Button</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)

    但颜色显得灰色而不是 @color/my_color

    android android-appcompat

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