2014-11-04 46 views
4

Google SignInButton未在Android Studio的预览窗格上呈现。一个错误正在显示,我不知道发生了什么。我只是想实施Google登录,但这阻止了我的能力。Android Studio未呈现SignInButton <item>标签需要'android:color'属性

我gradle这个文件:

apply plugin: 'com.android.application' 
apply plugin: 'android' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.0.0" 

    defaultConfig { 
     applicationId "com.rleote.googlelogin" 
     minSdkVersion 17 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:20.+' 
    compile 'com.google.android.gms:play-services:6.1.+' 
} 

这是我如何在我的活动引用SignInButton:

<com.google.android.gms.common.SignInButton 
android:id="@+id/btn_sign_in" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginBottom="20dp"/> 

在预览窗格中的错误是这样的: 异常详细信息机器人。 content.res.Resources $ NotFoundException:在当前配置中找不到可绘制资源匹配值0x7FFF001C(已解析名称:common_signin_btn_text_dark)。 at android.content.res.BridgeResources.throwException(BridgeResources.java:699)at android.content.res.BridgeResources.getColorStateList(BridgeResources.java:210)at com.google.android.gms.common.internal.qc at com .google.android.gms.common.internal.qa com.google.android.gms.common.SignInButton.a ... 未能配置C:\ Users \ Rodrigo \ Source \ Repos \ googlelogin \ GoogleLogin \ app \ build \ intermediates \ exploded-aar \ com.google.android.gms \ play-services \ 6.1.71 \ res \ drawable \ common_signin_btn_text_dark.xml org.xmlpull.v1.XmlPullParserException:二进制XML文件行#5:标签需要'android:color'属性 ...

看起来它不能解析common_signin_btn_text_dark.xml,因为缺少颜色属性。但我没有定义这个drawable。看起来这是一个来自谷歌服务的组件,为什么这会丢失?

感谢您的帮助!

+0

您在预览窗格中选择了哪个API版本? – 2014-11-06 01:40:25

+0

在预览窗格中选择了api 21。 – digaomatias 2014-11-06 01:47:45

回答

4

好的,我已经找到了解决这个问题的方法。基本上错误是指出图形文件没有必要的android:color属性。但是,我不想添加自定义颜色。然后我得到的路径图形文件资源\绘制\ common_signin_btn_text_dark.xml一看,原来是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/common_signin_btn_text_pressed_dark" /> 
    <item 
     android:state_enabled="false" 
     android:state_focused="true" 
     android:drawable="@drawable/common_signin_btn_text_disabled_focus_dark" /> 
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/common_signin_btn_text_focus_dark" /> 
    <item 
     android:state_enabled="false" 
     android:drawable="@drawable/common_signin_btn_text_disabled_dark" /> 
    <item 
     android:drawable="@drawable/common_signin_btn_text_normal_dark" /> 
</selector> 

您可以注意到没有色彩属性。然后,我看到道路资源\颜色有一些文件,其中之一是common_signin_btn_text_dark.xml,包含此:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_pressed="true" 
     android:color="@color/common_signin_btn_dark_text_pressed" /> 
    <item 
     android:state_enabled="false" 
     android:state_focused="true" 
     android:color="@color/common_signin_btn_dark_text_disabled" /> 
    <item 
     android:state_focused="true" 
     android:color="@color/common_signin_btn_dark_text_focused" /> 
    <item 
     android:state_enabled="false" 
     android:color="@color/common_signin_btn_dark_text_disabled" /> 
    <item 
     android:color="@color/common_signin_btn_dark_text_default" /> 
</selector> 

的区别是颜色标记和没有绘制。但是,drawable也是强制性的。我所做的是“合并”到:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/common_signin_btn_text_pressed_dark" 
     android:color="@color/common_signin_btn_dark_text_pressed"/> 

    <item 
     android:state_enabled="false" 
     android:state_focused="true" 
     android:drawable="@drawable/common_signin_btn_text_disabled_focus_dark" 
     android:color="@color/common_signin_btn_dark_text_disabled"/> 
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/common_signin_btn_text_focus_dark" 
     android:color="@color/common_signin_btn_dark_text_focused" /> 
    <item 
     android:state_enabled="false" 
     android:drawable="@drawable/common_signin_btn_text_disabled_dark" 
     android:color="@color/common_signin_btn_dark_text_disabled" /> 
    <item 
     android:drawable="@drawable/common_signin_btn_text_normal_dark" 
     android:color="@color/common_signin_btn_dark_text_default" /> 
</selector> 

我仍然想要一个解释,如果我这样做的权利,或者这应该自动工作。这看起来很像一个解决方法,而不是一个简单的解决方案。

1

我已经使用此设置创建了一个测试项目,并在设计器中看到相同的错误。但是,该应用按预期运行,没有任何问题。我的结论是,这是一个您应该能够忽略的Android Studio/Google Play服务SDK错误。

0

有完全相同的问题,不知道它的原因,但在build.gradle(app)和building项目中将“minSdkVersion”从14更改为17。

P.S.在设备上进行调试时,按钮可以与任何SDK版本一起渲染,看起来像IDE问题

4

运行gradle任务buildDependents解决了我的问题。