2017-01-10 4 views
1

Когда я изменил мою minSdkVersion тогда я получаю эту ошибку:Изменение minSdkVersion от 15 до 16

android.view.InflateException: Binary XML файл строка # 43: Ошибка класса Раздувание TextView

Eariler это работает до того, как я внес изменения.

Вот мой стиль:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

    <style name="AppTheme.Dark" parent="Theme.AppCompat.NoActionBar"> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     <item name="colorAccent">@color/white</item> 
     <item name="colorControlNormal">@color/greyDark</item> 
     <item name="colorControlActivated">@color/off_white</item> 
     <item name="android:windowBackground">@color/pink</item> 
     <item name="android:fontFamily">sans-serif-light</item> 
     <item name="android:textStyle">normal</item> 
     <item name="android:windowContentTransitions" tools:targetApi="lollipop">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap" tools:targetApi="lollipop">true</item> 
     <item name="android:windowAllowReturnTransitionOverlap" tools:targetApi="lollipop">true</item> 
     <item name="android:windowSharedElementEnterTransition" tools:targetApi="lollipop">@android:transition/move</item> 
     <item name="android:windowSharedElementExitTransition" tools:targetApi="lollipop">@android:transition/move</item> 

    </style> 
    <style name="AlertDialogCustom" parent="@android:style/Theme.Dialog"> 
     <item name="android:textColor">@color/pink</item> 
     <item name="android:typeface">normal</item> 
     <item name="android:height">5dp</item> 
     <item name="android:textSize">20sp</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:background">@color/white</item> 
    </style> 

Я предполагаю, что есть что-то не так с родительским свойством стиля.

+0

Изменить снова misSDKVersion и проверить, работает он или нет? –

+0

@ReadyAndroid Не работает Я уже проверил пару раз Ответ Pratik не помог мне, так как у меня уже есть appcompact version 24.2.1 – SamH67

+0

Я прошу, чтобы в какой-либо minSDKVersion он работал с этим, если он не работает что, пожалуйста, добавьте ваш xml-файл для ошибки. –

ответ

0

Если вы меняете свою версию, то и изменить поддержку библиотеке.Конечно должно изменить поддержку LIB как для egfor апите 23 вы должны chnage в appcompact версию библиотеки на 23 Надеется, что это помощь. :)

+0

Nopes my appcompact version: compile 'com.android.support:appcompat-v7:24.2.1' – SamH67

+0

изменить тему приложения –

+0

Хорошо, но каковы изменения? – SamH67

0

вы должны попробовать изменения

<style name="AlertDialogCustom" parent="@android:style/Theme.Dialog"> 

в

<style name="AlertDialogCustom" parent="Theme.AppCompat.Dialog"> 
0

Это проблема с семейством шрифтов, которые вы используете в стиле. Возможно, шрифт sans-serif-light недоступен в папке ваших паспортов >> fonts. Поэтому ознакомьтесь с этим, как использовать пользовательские шрифты в android.

Вот шаги, чтобы следовать:

Android Студия:

Шаг1: Добавление семейства шрифтов файлы к приложению

A) Перейти к (папка проекта)

B) Затем app> src> main

C) Создайте в папке папки «assets» в папку.

D) Поместите файл шрифта 'abc.ttf' или 'abc.otf' в папку шрифтов.

Шаг 2: Теперь Создание attrs.xml под Рез папку, если она не существует, и добавить DECLARE-styleable

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<declare-styleable name="Font"> 
<attr name="typeface"> 
<enum name="FuturaLT" value="0" /> 
<enum name="FuturaLT_Heavy" value="1" /> 
<enum name="FuturaLT_Light" value="2" /> 
</attr> 
</declare-styleable> 

</resources> 

// Здесь FuturaLT/FuturaLT_Heavy/FuturaLT_Light имена файлов

Примечание: - имя перечисления должно быть типом имени шрифта с использованием подчеркивания (_), вам будет легко понять использование семейства шрифтов в вашем собственном коде. Никакой специальный символ или другая буква, иначе вы получите ошибку в папке gen для того же идентификатора атрибута.

Шаг 3: Создайте свой собственный вид (кнопки, TextView, EditText) класс: -

package com.myapp.views; 

import android.content.Context; 
import android.content.res.TypedArray; 
import android.util.AttributeSet; 
import android.widget.TextView; 

import com.myapp.R; 

public class CustomTextView extends TextView { 

    public CustomTextView(Context context) { 
     super(context); 
    } 

    public CustomTextView(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     try { 
      TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Font); 
      int font = a.getInt(R.styleable.Font_typeface, 0); 
      a.recycle(); 
      String str; 
      switch (font) { 
       case 1: 
        str = "fonts/FuturaLT.otf"; 
        break; 
       case 2: 
        str = "fonts/FuturaLT_Heavy.otf"; 
        break; 
       case 3: 
        str = "fonts/FuturaLT_Light.otf"; 
        break; 
       default: 
        str = "fonts/FuturaLT.otf"; 
        break; 
      } 

      setTypeface(FontManager.getInstance(getContext()).loadFont(str)); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @SuppressWarnings("unused") 
    private void internalInit(Context context, AttributeSet attrs) { 

    } 
} 

Шаг 4: Добавить FontManager.Поддержка Java класс

package com.myapp.views; 

import android.content.Context; 
import android.graphics.Typeface; 

import java.util.HashMap; 
import java.util.Map; 

public class FontManager { 
    private Map<String, Typeface> fontCache = new HashMap<String, Typeface>(); 
    private static FontManager instance = null; 
    private Context mContext; 

    private FontManager(Context mContext2) { 
     mContext = mContext2; 
    } 

    public synchronized static FontManager getInstance(Context mContext) { 
     if (instance == null) { 
      instance = new FontManager(mContext); 
     } 
     return instance; 
    } 

    public Typeface loadFont(String font) { 
     if (false == fontCache.containsKey(font)) { 
      fontCache.put(font, Typeface.createFromAsset(mContext.getAssets(), font)); 
     } 
     return fontCache.get(font); 
    } 
} 

Шаг 5: Использование в макете XML

<?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"> 

    <com.myapp.views.CustomTextView 
     android:id="@+id/tv_time_slot" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     app:typeface="FuturaLT" /> 
</LinearLayout> 

Вы можете также использовать в Java коде непосредственно:

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/FuturaLT.ttf"); 
tvText.setTypeface(tf); 

Примечание: - Если вы не используйте здесь FontManager для применения шрифта и напрямую используйте , тогда вы не сможете просмотреть свои просмотры в режиме предварительного просмотра графики.

+0

Pls see discussion Я спросил что-то там – SamH67

Смежные вопросы