我正在创建一个appwidget,它由一个名为Foo的自定义视图组成.
XML/widget.xml:
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp"
android:minHeight="72dp"
android:updatePeriodMillis="0"
android:initialLayout="@layout/widget_layout">
</appwidget-provider>
Run Code Online (Sandbox Code Playgroud)
布局/ widget_layout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<package.name.Foo
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
富:
public class Foo extends View
{..}
Run Code Online (Sandbox Code Playgroud)
我Foo在一个普通的Android应用程序中测试了视图,它运行得很好.但是,当我尝试运行小部件时,我得到了"error while loading widget".当我Foo从小部件中删除视图时,一切都很好.所以它与Foo视图有关.
不幸的是,我无法在DDMS中获得任何更具体的错误,因为我不知道调试小部件的方法.
我想知道是否确实可以在app-widget中使用您自己的自定义视图?我在这里做错了吗?
我正在尝试使用自定义字体创建数字时钟小部件。
我从这里得到了线索
解决方案是通过扩展 TextView 并为自定义字体字体添加新属性。与绘制 Canvas 和 Bitmap 解决方案然后将其传递给 RemoteViews 相比,这是一个很好的解决方案。
我遵循了每一步,1. 创建自定义类 CustomFont.java 2. 在 attrs.xml 中定义样式 3. 然后将其放入 main.xml
但我收到以下错误
WARN/AppWidgetHostView(18681): updateAppWidget couldn't find any view, using error view
WARN/AppWidgetHostView(18681): android.view.InflateException: Binary XML file line #17: Error inflating class upper.duper.widget.circular.clock.CustomFont
...
...
...
WARN/AppWidgetHostView(18681): Caused by: java.lang.ClassNotFoundException: upper.duper.widget.circular.clock.CustomFont in loader dalvik.system.PathClassLoader
Run Code Online (Sandbox Code Playgroud)
少了什么?
这里我附上代码 这是 CustomFont.java
package upper.duper.widget.circular.clock;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;
public class CustomFont extends TextView {
private …Run Code Online (Sandbox Code Playgroud)