2015-10-22 43 views
2

enter image description here如何創建一個日期繪製像谷歌日曆應用程序

我不知道如何創建一個可繪製,並把它添加到工具欄上面的一樣(紅圈)的圖像。該數字對應於今天的日期。

如果您有任何想法,請幫助我。

更新: 感謝您的意見。這是我想出:

  1. 創建我的自定義繪製對象(如:TextDrawable擴展可繪製)

  2. 覆蓋抽獎(帆布油畫)方法

  3. 我的自定義繪製對象編程方式添加到我的工具欄:

內:onCreateOptionsMenu(菜單菜單)

menu.add(0, 0, 1, getString(R.string.jump_to_today)).setIcon(new TextDrawable("22")).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

現在,它顯示一個像我想要的文本日期(還沒有日曆背景)。我想我必須用我的抽籤方法來寫。

感謝您的幫助!

+1

您需要創建一個自定義'Drawable'類並覆蓋它的'draw'方法 – pskink

+0

確保您必須在'draw'方法中執行 – pskink

回答

2

試圖在圖像上書寫文字...

首先,你需要一個日曆圖像無文本(在這種情況下,「22」)。然後,您在圖像上寫入文字「22」。事情是這樣的:

Bitmap calendarBitmap = ... // Load your calendar image here 
Canvas canvas = new Canvas(bitmap); 
Paint paint = new Paint(); 
paint.setColor(Color.BLACK); 
paint.setTextSize(10); 
canvas.drawText("22", x, y, paint); 

其中Xÿ是文本的圖像上位置的座標。您還需要將Color.BLACK更改爲圖像的顏色以保持一致。

最後,您將得到calendarBitmap作爲結果。

+0

然後,如何將其添加到我的工具欄?現在,我從res /菜單添加。 –

+0

如果您使用操作欄,您可以獲取MenuItem並更新其可繪製的。如果它是一個圖像,只需將calendarBitmap設置爲它的位圖。 –

1

我認爲最好的方法是獲取你想要的圖像作爲日曆(也許你可以在android資源中找到它)。然後將其轉換爲九個補丁並將其用作TextView的背景可繪製。

你可以閱讀谷歌documentation關於創建九個補丁。您將能夠通過定義內容區域來定義文本應該在哪個區域。

+0

我也在想它,但我堅持要如何將它添加到工具欄?我現在使用res/menu將項目添加到工具欄。 –

+0

我忘了你想把它添加到工具欄,我的壞。我可以想到一種可行的解決方案(但我沒有測試它)。僅使用帶有可繪製背景的「TextView」爲圖標創建一個xml文件。然後在創建菜單時,膨脹此視圖並設置文本。然後調用菜單項上的'setActionView'來設置視圖。另一種解決方案可以工作但很糟糕的是,有31個圖標(每天一個),並在充氣菜單時調用'setIcon'和相應的圖標。請告訴我,如果第一個工作,所以我可以更新我的答案。 – sonic