【问题标题】:Android Widget Text BackgroundAndroid 小部件文本背景
【发布时间】:2010-01-26 14:41:19
【问题描述】:

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

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

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

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

【问题讨论】:

标签: android android-widget


【解决方案1】:

我会这样做:

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

LinearLayout 的背景是&lt;selector&gt; 又名StateListDrawable。选择器会指定一个透明背景,选中后会变为橙色。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2018-11-24
    相关资源
    最近更新 更多