有没有办法让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) 我正在尝试使用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
我们刚刚更改了应用程序以使用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
我经常在布局文件中看到工具栏的这个声明:
<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
我刚刚将我的一个应用程序调整到新的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
我已将SDK更新到最新版本(API 23),并且onAttach(Activity)不推荐使用片段方法.因此,不是使用该方法,现在我正在使用,onAttach(Context)但是在生命周期中不会调用此方法.活动是AppCompatActivity来自v7 的实例,片段是类Fragment(android.app.Fragment)的实例.
有任何想法如何onAttach在API 23中工作?
解
我找到了一些可以帮助您理解和解决此问题的答案:
解决方案:
使用getSupportFragmentManager()将强制您使用支持库中的片段.因此,第一个解决方案是使用支持lib中的片段替换所有片段并使用getSupportFragmentManager().
我已经实现的解决方案是处理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) 我正在使用带有选项卡的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
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>是什么?有人可以发一些样品吗?
任何提示或代码将不胜感激.提前致谢.
我已经解决了这个问题几个小时了.从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
我有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