程序兼容性工具栏v7版本“错误充气类 ”(AppCompat v7 Toolbar “Erro

2019-10-21 14:24发布

我需要使用程序兼容性V7中引入新的工具栏功能:21阅读SO跟帖这里和android的博客文章在这里 。 我exacctly复制工具栏段从博客帖子到我的布局:

<?xml version="1.0" encoding="utf-8"?>
<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.v7.widget.Toolbar                  <- Line 8
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

</LinearLayout>    

问题是,我得到:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blabla.PrefActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>    

有趣的是,如果我删除此行:机器人:=了minHeight “?ATTR / actionBarSize”

有用。 所以问题是因为项目的依赖左右不是。 看来我只是不能访问?ATTR元素,如actionBarSize或colorPrimary

不neede地说,我已经添加程序兼容性依赖。 而该活动从PreferenceActivity继承。 这里是我的gradle产出:

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

这里和这里的人报告给解决了随机的基础上的问题。 但是我的随机并没有对过去两天工作。

编辑:

这里是我的活动:

public class PrefActivity extends PreferenceActivity {

private Toolbar mToolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
    LinearLayout content = (LinearLayout) root.getChildAt(0);
    LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.activity_prefs, null);

    root.removeAllViews();
    toolbarContainer.addView(content);
    root.addView(toolbarContainer);

    mToolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar);
    selectResource();
    mToolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
    mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
}

Answer 1:

属性的使用(?ATTR /)意味着使用的值从当前上下文的主题。 你需要确保你的主题有?ATTR / actionBarSize attibute值。 您可以使用或继承@风格/ Theme.AppCompat你的主题。 或者只是手动设置值。



文章来源: AppCompat v7 Toolbar “Error inflating class