2010-01-26 100 views
0

我有一個應用程序的小部件,但我有一些小部件的佈局的困難。Android Widget文本背景

基本的想法,如果小部件應該看起來像一個圖標,並像桌面上的任何其他圖標一樣有一個小文本標籤。

我發現它採用的是Android One例如:背景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文件,它允許我在選擇小部件時更改圖像。不過,我更喜歡圖標的默認動作,圖標周圍的方塊變爲橙色。

我將如何實現這兩個效果 - 我知道它可能以某種方式作爲應用程序「短信未讀數」實現了我想要發生的事!

+0

我不同意這個答案。 你絕對不應該嘗試這樣做。它已經在這裏討論:[http://stackoverflow.com/questions/2651631/android-home-screen-widget-icon-label-style/2652961#2652961](http://stackoverflow.com/questions/2651631/ Android的主屏幕小部件圖標標籤式/ 2652961#2652961) – 2011-04-24 16:23:04

回答

2

我會做這樣的事情:

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

的LinearLayout的背景將是一個<selector>又名StateListDrawable。選擇器將指定一個透明的背景,選中後會變爲橙色。

LinearLayout也將是視圖,您將設置您的PendingIntent,以便用戶可以單擊視圖中的任何位置,它將註冊爲onClick事件。

至於你的佈局問題,你只需要使用佈局來讓圖像和文本看起來像主屏幕上的其他圖標。我認爲用水平居中的TextView在它下面水平居中的ImageView並不難,然後只是調整圖像尺寸和文本大小,直到它們看起來像主屏幕上的其他圖標。

至於您在主屏幕上切換到橫向視圖時看到的問題,您需要提供橫向版本的佈局XML文件,以便在橫向模式下正確顯示。請參閱我對this question的回答。當我製作應用程序小部件時,我通常會獲得完美的縱向視圖,然後將該佈局文件複製到layout-land目錄並開始進行調整,直到它看起來像我希望它在橫向上一樣。