Android-Drawable-在较低的API中膨胀TextView时出错

Android-Drawable-在较低的API中膨胀TextView时出错,android,android-layout,android-studio,Android,Android Layout,Android Studio,当我使用API 25在Emulator上运行代码时 它很好用 相反,在使用API 16的emulator上,我得到了这个错误 android.view.InflateException:二进制XML文件行#36:膨胀类TextView时出错 这是我得到错误的那一行 public class RecipeAdapter extends RecyclerView.Adapter<RecipeAdapter.MyViewHolder> { ... static class

当我使用API 25在Emulator上运行代码时

它很好用

相反,在使用API 16的emulator上,我得到了这个错误

android.view.InflateException:二进制XML文件行#36:膨胀类TextView时出错

这是我得到错误的那一行

public class RecipeAdapter extends RecyclerView.Adapter<RecipeAdapter.MyViewHolder> {
    ...
    static class MyViewHolder extends RecyclerView.ViewHolder{
        TextView recipe, time;
        RatingBar ratingBar;
        ImageView imageView;

        MyViewHolder(View view) {
            super(view);

            recipe = (TextView) view.findViewById(R.id.tv_recipe_name);
            time = (TextView) view.findViewById(R.id.tv_time);
            ratingBar = (RatingBar) view.findViewById(R.id.ratingBar);
            imageView = (ImageView) view.findViewById(R.id.iv_recipe);
        }
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_recipe, parent, false); // <- Error

        return new MyViewHolder(itemView);
    }
    ...
}
文本视图中使用的android:drawableLeft=“@drawable/ic_time”似乎是问题所在。用更好的更换拉丝,或拆下这条线

移除后


文本视图中使用的android:drawableLeft=“@drawable/ic_time”似乎是问题所在。用更好的更换拉丝,或拆下这条线

移除后



在此处发布您的样式=“@style/SemiBold”。字体/SourceSansPro-Semibold.otf尝试将字体文件名更改为SourceSansPro_Semibold.otf(将hypen替换为名称中的下划线)。我会尝试这样做,但只是像我在问题中所说的那样重复一遍。这在API 25上工作也可能是问题的根源:android:textAppearance=“@style/Regular”在此处发布您的样式=“@style/SemiBold”。字体/SourceSansPro-Semibold.otf尝试将字体文件名更改为SourceSansPro_Semibold.otf(将hypen替换为名称中的下划线)。我会尝试这样做,但只是像我在问题中所说的那样重复一遍。这在API 25上运行也可能是问题的根源:android:textAppearance=“@style/Regular”为什么?这没有道理。为什么这个原生Android功能会导致如此大的崩溃?为什么?这没有道理。为什么这个原生Android功能会导致如此大的崩溃?
E/AndroidRuntime: FATAL EXCEPTION: main
       android.view.InflateException: Binary XML file line #36: Error inflating class TextView
              at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
              at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
              at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
              at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
              at com.mnm.cookrecipe.recycler.RecipeAdapter.onCreateViewHolder(RecipeAdapter.java:55) // <- this
              at com.mnm.cookrecipe.recycler.RecipeAdapter.onCreateViewHolder(RecipeAdapter.java:21) // <- this
              at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6078)
              at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5248)
              at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5158)
              at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2061)
              at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:562)
              at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1408)
              at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:580)
              at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170)
              at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3379)
              at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3188)
              at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3632)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1193)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
              at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
              at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
              at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)
              at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
              at android.view.View.layout(View.java:13754)
              at android.view.ViewGroup.layout(ViewGroup.java:4364)
              at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1868)
              at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1689)
              at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
              at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4214)
              at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?android:attr/selectableItemBackground"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="@dimen/space16">

    <ImageView
        android:id="@+id/iv_recipe"
        android:layout_width="52dp"
        android:layout_height="52dp" />

    <RatingBar
        android:id="@+id/ratingBar"
        style="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/space8"
        android:isIndicator="true"
        android:numStars="5"
        android:rating="3.5" />

    <TextView
        android:id="@+id/tv_recipe_name"
        style="@style/SemiBold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/space8"
        android:gravity="center_horizontal"
        android:text="RECIPES"
        android:textColor="@color/colorTextDark"
        android:textSize="@dimen/h3" />

    <TextView
        android:id="@+id/tv_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/ic_time"
        android:drawablePadding="@dimen/space8"
        android:text="1h 20'"
        android:textAppearance="@style/Regular"
        android:textColor="@color/colorTextGrey"
        android:textSize="@dimen/h3" />
</LinearLayout>
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "com.mnm.cookrecipe"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            debuggable false
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        javaMaxHeapSize '3g'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.android.support:design:25.0.1'
    compile 'uk.co.chrisjenx:calligraphy:2.2.0'
    compile 'com.android.support:support-v4:25.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.android.support:recyclerview-v7:25.0.1'
    compile 'com.android.support:cardview-v7:25.0.1'
    testCompile 'junit:junit:4.12'
}
package jdroidcoder.ua.stackquestion1;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

/**
 * Created by jdroidcoder on 01.04.17.
 */

public class RecipeAdapter extends RecyclerView.Adapter<RecipeAdapter.MyViewHolder> {
    private Context context;

    public RecipeAdapter(Context context) {
        this.context = context;
    }

    static class MyViewHolder extends RecyclerView.ViewHolder{
        TextView recipe, time;
        RatingBar ratingBar;
        ImageView imageView;

        MyViewHolder(View view) {
            super(view);

            recipe = (TextView) view.findViewById(R.id.tv_recipe_name);
            time = (TextView) view.findViewById(R.id.tv_time);
            ratingBar = (RatingBar) view.findViewById(R.id.ratingBar);
            imageView = (ImageView) view.findViewById(R.id.iv_recipe);
        }
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                .inflate(R.layout.item_recipe, parent, false); 

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }
}
  @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
                .inflate(R.layout.item_recipe, parent, false); 

        if(itemView!=null)
            ((ViewGroup)itemView.getParent()).removeView(itemView);
        return new MyViewHolder(itemView);
    }
android:drawableLeft="@drawable/ic_time
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?android:attr/selectableItemBackground"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="@dimen/space16">

    <ImageView
        android:id="@+id/iv_recipe"
        android:layout_width="52dp"
        android:layout_height="52dp" />

    <RatingBar
        android:id="@+id/ratingBar"
        style="@style/RatingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/space8"
        android:isIndicator="true"
        android:numStars="5"
        android:rating="3.5" />

    <TextView
        android:id="@+id/tv_recipe_name"
        style="@style/SemiBold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/space8"
        android:gravity="center_horizontal"
        android:text="RECIPES"
        android:textColor="@color/colorTextDark"
        android:textSize="@dimen/h3" />

    <TextView
        android:id="@+id/tv_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawablePadding="@dimen/space8"
        android:text="1h 20'"
        android:textAppearance="@style/Regular"
        android:textColor="@color/colorTextGrey"
        android:textSize="@dimen/h3" />
</LinearLayout>