2017-04-01 37 views
0

。当我跑我的模拟器代码API 25Android的 - 绘制对象 - 错误膨胀的TextView更低API

它工作正常

而是与API 16模拟器,我得到这个错误

android.view.InflateException:二进制XML文件行#36:错误膨胀类TextVi EW

这里是我的错误

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); 
    } 
    ... 
} 

这是错误消息

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> 

这是app.gradle文件

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' 
} 
+0

后发表您的风格= “@风格/ SemiBold” 在这里。 –

+0

<样式名称= “SemiBold” 父= “机器人:TextAppearance”> <项名称= “字体路径”>字体/ SourceSansPro-Semibold.otf –

+0

尝试改变字体文件名到SourceSansPro_Semibold.otf(在替换连字符与下划线名称)。 –

回答

0

机器人:drawableLeft = “@绘制/ ic_time” 使用在文本视图似乎是问题。有更好的替换绘制或删除此行

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> 
+0

为什么?这没有意义。为什么这种原生的Android功能会导致这么大的崩溃? –

0
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; 
    } 
} 

OR试试这个:

@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); 
    } 
+0

这两个解决方案都没有工作 –

相关问题