【问题标题】:glowpadview issue with xmlxml的glowpadview问题
【发布时间】:2015-06-03 05:34:54
【问题描述】:

我在 XML 布局文件中有一个 gloompadview 问题。

我的布局代码是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:glowpad="http://schemas.android.com/apk/com.fima.glowpadview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<com.fima.glowpadview.GlowPadView
    android:id="@+id/glow_pad_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center_vertical"
    android:layout_marginBottom="@dimen/glowpadview_margin_bottom"
    android:focusable="true"
    android:gravity="center"
    glowpad:directionDescriptions="@array/snooze_dismiss_direction_descriptions"
    glowpad:feedbackCount="1"
    glowpad:glowRadius="@dimen/glowpadview_glow_radius"
    glowpad:handleDrawable="@drawable/ic_alarm_alert_touch_handle"
    glowpad:innerRadius="@dimen/glowpadview_inner_radius"
    glowpad:outerRadius="@dimen/glowpadview_target_placement_radius"
    glowpad:outerRingDrawable="@drawable/ic_alarm_alert_outerring"
    glowpad:pointDrawable="@drawable/ic_lockscreen_glowdot"
    glowpad:snapMargin="@dimen/glowpadview_snap_margin"
    glowpad:targetDescriptions="@array/snooze_dismiss_descriptions"
    glowpad:targetDrawables="@array/snooze_dismiss_drawables"
    glowpad:vibrationDuration="20" />

我收到以下错误:

The following classes could not be instantiated:

- com.fima.glowpadview.GlowPadView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.
Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse

java.lang.IllegalStateException: Must specify at least one target drawable
    at com.fima.glowpadview.GlowPadView.<init>(GlowPadView.java:247)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(    at sun.reflect.NativeConstructorAccessorImpl.newInstance(    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(    at java.lang.reflect.Constructor.newInstance(    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:442)
    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:194)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:206)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:131)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:756)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:728)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:373)

我该如何解决这个问题?

【问题讨论】:

  • 请有人帮助我

标签: java android xml


【解决方案1】:

有一个属性是:glowpad:targetDrawables 导致问题,除了提供至少一个有效的目标可绘制对象之外,还必须定义该属性。

我看到你已经定义了它:glowpad:targetDrawables="@array/snooze_dismiss_drawables",所以问题出在文件snooze_dismiss_drawables 中,我相信它肯定包含所有这样的空值:

<array name="snooze_dismiss_drawables">
    <item>@null</item>
    <item>@null</item>
    <item>@null</item>
    <item>@null</item>
</array>

所以为了让一切正常工作,在四个方向中的任何一个上定义至少一个有效的可绘制对象,以便 GlowPad 可以工作,如果你想让它没有可见的可绘制对象,你绝对可以定义一个透明的可绘制对象并且它会工作还有,例如:

<array name="snooze_dismiss_drawables">
    <item>@android:color/transparent</item>
    <item>@null</item>
    <item>@android:color/transparent</item>
    <item>@null</item>
</array>

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2010-09-29
    • 2021-01-30
    • 2011-08-07
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多