Android Studio渲染问题,无法找到自定义TextView

时间:2015-09-27 02:44:36

标签: java android android-layout

我遇到了渲染问题,但还没弄清楚如何解决问题。我创建了一个自定义textview类,将视图设置为自定义字体。我相信我的设置是正确的,但由于某种原因自定义文本没有被应用,我在我的布局中接收使用此自定义textview小部件的渲染问题。这是我的设置。

自定义TextView类

public class FontedTextView extends TextView {

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

    public FontedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        CustomFontHelper.setCustomFont(this, context, attrs);
    }

    public FontedTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        CustomFontHelper.setCustomFont(this, context, attrs);
    }
}

Helper类设置字体

class CustomFontHelper {

    public static void setCustomFont(TextView textview, Context context, AttributeSet attrs) {
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomFont);
        String font = a.getString(R.styleable.CustomFont_font);
        setCustomFont(textview, font, context);
        a.recycle();
    }

    private static void setCustomFont(TextView textview, String font, Context context) {
         if (font == null) {
            return;
        }

        Typeface tf = FontCache.get(font, context);
        if (tf != null) {
            textview.setTypeface(tf);
        }
    }
}

我在布局

中使用了这样的textView
        <com.example.gui.FontedTextView
            style="@style/CustomTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test new text typeface"
            android:textColor="@color/black"
            android:textSize="40sp" />

在styles.xml中,我添加了一个引用我的自定义字体的样式

<style name="CustomTextView" parent="@android:style/Widget.TextView">
    <item name="com.example:font">fonts/UglyFont.otf</item>
</style>

我的attrs.xml看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomFont">
        <attr name="font" format="string"/>
    </declare-styleable>
</resources>

这是我在其他帖子中发现的问题,但我的具体情况似乎有点不同。我没有在我的样式中引用AppCompact,所以我不需要添加任何支持库或依赖项。特定于我创建的自定义textView存在冲突。这就是错误所说的内容。

  

无法实例化以下类:

     

- com.example.gui.FontedTextView(Open Class,Show Exception,Clear Cache)

     

提示:在自定义视图中使用View.isInEditMode()来跳过代码或显示   IDE异常详细信息中显示的示例数据   java.lang.NoClassDefFoundError:com / example / gui / CustomFontHelper   在com.example.gui.FontedButton。(FontedButton.java:19)at   java.lang.reflect.Constructor.newInstance(Constructor.java:408)at   android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)   在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:835)   在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:811)   在   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)   在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)   在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:811)   在   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)   在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)   在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:811)   在   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)   在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)   在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:811)   在   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)   在   android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)   在   android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)   在android.view.LayoutInflater.rInflate(LayoutInflater.java:811)   在   android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)   在android.view.LayoutInflater.inflate(LayoutInflater.java:515)at   android.view.LayoutInflater.inflate(LayoutInflater.java:394)

我尝试的事情但问题没有解决

- 使缓存无效并重新启动

- 重建/清洁

- 将SDK级别从23更改为21,20,19,18和17.没有任何区别

0 个答案:

没有答案