引用Android Design包出现的错误

在用Android Studio开发的过程中,一遇到废弃、不被推荐的方法和类,我就想做点什么去掉上面的横线。然后,被一个不是问题的问题困扰了很久。

之前我们在创建固定Tabs的时候,类似于这样的功能,

使用的是ActionBar.Tab但是ActionBar deprecated。那什么是新的解决方案呢?TabLayout+ViewPager就能实现上述的功能

出现的错误:android.view.InflateException: Binary XML file line #8: Error inflating class android.support.design

首先,我明确一下,我的sdk升级到了21版本以上。support Library 也是最新的。

在Android studio添加依赖

build.gradle(Module.app)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.android.support:support-v4:22.2.0'
    compile 'com.android.support:design:22.2.0'
}

activity_main.xml内容如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.design.widget.TabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="scrollable" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:background="@android:color/white" />

</LinearLayout>

错误信息提示:

Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class android.support.design.widget.TabLayout
        at android.view.LayoutInflater.createView(LayoutInflater.java:633)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
        at android.app.Activity.setContentView(Activity.java:2144)
        at com.example.hp.myapplication.MainActivity.onCreate(MainActivity.java:15)
        at android.app.Activity.performCreate(Activity.java:5933)

上面提示的错误是,在xml文件中的第8行,出现了Inflate错误,然后导致MainActivity.java:15行中的

setContentView(R.layout.activity_main);

错误。

解决错误的方法:

在res/values中的styles.xml中,需要修改parent的属性值,不能使用自定义的。

这里面有两个styles.xml都需要修改

修改内容,参考如下:

<resources>

    <style name="AppTheme" parent="Base.AppTheme">
        <!-- Customize your theme here. -->
    </style>
    <!-- Base application theme. -->
    <style name="Base.AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">#673AB7</item>
        <item name="colorPrimaryDark">#512DA8</item>
        <item name="colorAccent">#FF4081</item>
    </style>

</resources>

修改parent中的属性值,与上面定义的对应

<resources>
    <style name="AppTheme" parent="Base.AppTheme">
    </style>
</resources>

结果就成功解决了。

类似问题参考链接:http://stackoverflow.com/questions/30547323/error-when-using-any-android-design-support-library-elements/30557995#30557995

时间: 2024-11-04 01:13:35

引用Android Design包出现的错误的相关文章

【Android笔记】Android引用第三方依赖包library报错解决方法

在Android工程项目中,我们经常需要引用第三方依赖包library,有可能遇到以下引用报错的问题: 在设置完library后重新打开显示管理错误,就是reference那里有个红叉叉,eclipse没有报错. 那么有可能是因为: 在windows系统下,你的工程项目跟要引用的library工程项目不是在同一个盘符或跟目录下. 因为如果在不同盘符,project.properties中的android.library.reference.1值变成绝对路径,而ADT推荐是在ubuntu下使用的,

Android学习笔记--design包下的两个控件

今天学习了design包下的两个控件,记录一下,首先需要我们依赖 1 compile 'com.android.support:design:25.0.0' 之后在XML文件中就可以使用了 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 x

Android开发中出现的低级错误之没有android jar包

The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files 解决办法:相应的系统的jar包没有导入:选add External JARs...,添加android.jar. 为什么导入工程时候,android.jar包没有导入进来?现象就是所有工程都有问题. 解决办法:在系统的环境变量Path中增加E:\adt-bundle-windows-x86-201

【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

译者地址:[翻]Android Design Support Library 的 代码实验--几行代码,让你的 APP 变得花俏 原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fancy with few lines of code 原文项目 demo: Lab-Android-DesignLibrary 双语对照地址: [翻-双语]Android D

Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译,点击"阅读原文"可以查看英文原文. 译者简介:damonxia(夏正冬),天天P图Android工程师 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G.3G网络或者在以字节付费的网络.这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用. 理解APK的结构 在讨论怎样减少应用大小之前,先了解APK的结构是有用的.一个APK文件就是ZIP包,其中包含了组成你的应用的所有文件,比如Java

安卓Design包之AppBar和Toolbar的联用

前面讲了Design包的的CoordinatorLayout和SnackBar的混用,现在继续理解Design包的AppBar; AppBarLayout跟它的名字一样,把容器类的组件全部作为AppBar. 如: <android.support.design.widget.AppBarLayout android:layout_width="match_parent" app:theme="@style/Base.ThemeOverlay.AppCompat.Dark

Android Design Support Library--TextInputLayout的使用

引言 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,Android Design Support Library的兼容性更广,直接可以向下兼容到Android 2.2,我准备从最简单的控件开始,逐渐延伸,把新控件都给熟悉一遍. 先从看起来最简单的控件开始,也就是TextInputLayout,说实话TextInputLayout 我所见到的平常用的并不多,它

Material Design with the Android Design Support Library

Material Design with the Android Design Support Library 原文http://www.sitepoint.com/material-design-android-design-support-library/ Material Design,Android 5.0发布时为android app 和其他平台app引入的一门新的设计语言. 它带来了一些新的UI组件,如“Floating Action Button”.实施这些新组件,同时确保向后兼容

安卓Design包下的TextInputLayout和FloatingActionButton的简单使用

终于介绍到Design包的最后的东西了. 也很简单,一个是TextInputLayout. TextInputLayout作为一个父容器,包含一个新的EditText,可以给EditText添加意想不到的效果,特别在注册功能开发中,用处非常广泛. 它可以直接提示输入错误,而不至于像以前一样总是点击按钮后才能检测出输入的错误,当有很多输出框的时候更是难以区分.. 并且还可以把hint 默认提示值放到上面去. 实现界面大概是这样的. 当你输入正确后是这样的. 实现代码也很简单. 添加一个监听焦点事件