Android小部件文本背景

时间:2010-01-26 14:41:20

标签: android android-widget

我有一个带有小部件的应用程序,但我对小部件的布局有些困难。

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

我找到了一个使用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文件,它允许我在选择小部件时更改图像。但是我更喜欢图标的默认操作,图标周围的方块变为橙色。

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

1 个答案:

答案 0 :(得分:2)

我会做类似的事情:

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

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

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

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

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