0

我有一个带有小部件的应用程序,但我在小部件的布局上遇到了一些困难。

如果小部件应该看起来像一个图标并且像桌面上的任何其他图标一样在它下面有一个小文本标签的基本想法。

我找到了一个使用 android:background 作为 TextView 并使用可绘制 XML 的示例:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#AA111111"/>
<padding android:left="5dp" 
  android:right="5dp"
  android:bottom="1dp" 
  android:top="1dp" />
<corners android:radius="8dp" />
</shape>

但是,这并不能很好地工作,文本与桌面上的其他图标不同,并且当您旋转手机时,文本的一部分被切掉了!

下一个问题是选择小部件,我使用 ImageButton 作为图标 - 将 android:background 设置为透明图像。我一直在使用另一个可绘制的 xml 文件,它允许我在选择小部件时更改图像。但是,我更喜欢图标的默认操作,其中图标周围的正方形变为橙色。

我将如何实现这两个效果 - 我知道这是有可能的,因为应用程序“短信未读计数”完全实现了我想要发生的事情!

4

1 回答 1

2

我会做类似的事情:

<LinearLayout>
    <ImageView/>
    <TextView/>
</LinearLayout>

LinearLayout 的背景将是一个<selector>又名StateListDrawable。选择器将指定一个透明背景,选中时会变为橙色。

LinearLayout 也将是您设置PendingIntent的视图,以便用户可以单击视图中的任何位置,并将注册为 onClick 事件。

至于您的布局问题,您只需要使用布局来使图像和文本看起来像主屏幕上的其他图标。我认为获得一个水平居中的 ImageView 并在其下方有一个水平居中的 TextView 并不难,然后只需调整图像尺寸和文本大小,直到它们看起来就像主屏幕上的其他图标一样。

至于您在主屏幕上切换到横向视图时看到的问题,您需要提供一个横向版本的布局 XML 文件,该文件经过调整以在横向模式下正确显示。有关执行此操作的方法,请参阅我对这个问题的回答。当我制作应用程序小部件时,我通常会让纵向视图看起来很完美,然后将该布局文件复制到 layout-land 目录并开始进行调整,直到它看起来像我想要的横向视图。

于 2010-01-26T15:20:46.683 回答