【问题标题】:Android Home Screen Widget (icon, label - style)Android 主屏幕小部件(图标、标签 - 样式)
【发布时间】:2010-04-16 08:39:54
【问题描述】:

我正在尝试创建一个可以放置在 android 主屏幕上的图标/小部件(1 个单元格 x 1 个单元格)。该小部件的外观和行为与 android 中的其他标准快捷方式完全相同。它将有一个图标,并在该标签下,可以使用轨迹球(可以突出显示)选择它,当它被选中/单击时会突出显示。

如何创建这个主屏幕小部件?

我是否必须使用代码/xml 自己创建小部件,或者是否有一些标准的 xml、样式、主题、代码可以用来确保小部件与其他主屏幕小部件具有相同的样式/主题?

我目前有以下

res/drawable/corners.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Corners">
    <stroke android:width="4dp" android:color="#CC222222"  />
    <padding android:left="4dp" android:top="1dp" android:right="4dp" android:bottom="1dp" />
    <corners android:radius="4dp" />
</shape>

res/layout/widget.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Widget"
    android:layout_width="72dip"
    android:layout_height="72dip"
    android:orientation="vertical"
    android:focusable="true"
    android:gravity="center_horizontal"
    style="@android:style/Widget"   
    >

    <ImageView
        android:id="@+id/WidgetIcon"
        android:src="@drawable/icon"
        android:layout_width="fill_parent" 
        android:layout_height="50dip"
        android:paddingTop="3dip"
        android:gravity="center"
        />

    <TextView
        android:id="@+id/WidgetLabel"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="@string/app_name"
        android:textSize="15dip"
        android:background="@drawable/corners"
        />

</LinearLayout>

生成的小部件看起来有些接近,但无法选择,单击时不会突出显示,并且标签的位置或样式不正确。

任何想法,如果有正确的方法可以做到这一点,还是我应该继续处理上述问题,直到我更接近?

【问题讨论】:

  • 您找到解决方案了吗?它看起来与标准标签一模一样?
  • 下面的答案是正确的,你不应该让小部件看起来像快捷方式,因为不同的操作系统可能会以不同的方式显示它们的快捷方式!因此,如果您为 HTC 手机制作一个,它可能与 MOTOBLUR 手机上显示的快捷方式不匹配。话虽如此,我还是做了,让我的一个看起来像 HTC :)

标签: android android-widget


【解决方案1】:

“执行此操作的正确方法”是创建快捷方式,而不是尝试使用应用小部件来模仿它。核心 Android 团队(尤其是 Romain Guy)在 [android-developers] 讨论列表中反复指出了这一点,such as

小部件应该看起来像小部件,而不是 像捷径一样。主要原因是 绝对不能保证 关于快捷方式的外观。 其他设备(尤其是带有 自定义系统 UI,如 MOTOBLUR 或 HTC Sense) 可能有不同的外观和 感觉。或者在安卓的下一次更新中 我们可能会改变捷径的方式 呈现。

【讨论】:

  • 看起来创建 1x1 小部件是创建带有“计数器徽章”的应用程序图标的唯一方法。有什么方法可以将特定于设备的主题应用于我的布局?
  • @Kevin:根据我对“声明式”的定义,应用小部件和快捷方式都不能声明式地声明。
  • 如何让小部件的名称像应用程序一样显示在主屏幕小部件下方?
  • @toobsco42:嗯,大概在你的应用小部件布局中添加一个TextView
  • @CommonsWare 但是如何获得相同的文本样式和阴影以匹配其他应用程序图标标签?
【解决方案2】:

通过引用系统属性android:attr/selectableItemBackground,使您的项目与系统外观和感觉保持一致并不难。例如,如果您想通过适当的突出显示等使小部件中的 ImageView 看起来“可选择”:只需这样做

<ImageView
    ...
    android:background="?android:attr/selectableItemBackground"
    ...
    />

android_sdk_path/platforms/android-x 有很多内容。快乐挖掘!

编辑:我后来发现这个简单的属性并不存在于 SDK

【讨论】:

    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多