2012-01-02 32 views
1

我想創建一個來自9個小程序的自定義Android按鈕,但不使用任何XML。我知道,這聽起來很愚蠢,但原因是由於某種原因,我的IDE(NetBeans)無法相信整個XML。 R.java在一半時間內沒有生成(修復程序對我無效),並且出現隨機錯誤,即使我只是從教程中複製和粘貼XML。從9個不帶XML的自定義按鈕

這是我計劃如何創建按鈕:

  1. 按鈕有setBackgroundDrawable()方法
  2. 我需要suply這種方法用StateListDrawable
  3. ,我需要從NinePatchDrawables
  4. 建立

所以首先我需要創建9個patch,然後從他們那裏創建一個StateListDrawable,並簡單地將StateListDrawable作爲backgr來傳遞爲我的Button的setBackgroundDrawable()方法。

我無法啓動9次修補程序,因爲我找不到構造函數的工作方式。

+0

謝謝,終於我能夠得到一個運行自定義按鈕的應用程序。但還有另一個問題:android似乎並不認可,即我的drawables ara 9補丁。如果我在按鈕中放置更多文字,它會變得混亂。我試圖明確地投出Drawables,當我從資源文件中加載它們時: NinePatchDrawable normal =(NinePatchDrawable)getResources()。getDrawable(R.drawable.button_red_normal); 但後來我得到一個錯誤。有沒有辦法,告訴編譯器/安卓系統/誰做它,把我的drawables作爲9個補丁? – 2012-01-03 10:17:31

回答

3

那豈不是更有意義了你投資的時間在任一:

  • 固定的NetBeans,或
  • 切換到一些不同的編輯器/ IDE?

試圖在沒有XML的情況下進行Android開發就好像試圖沒有翅膀一樣。這是可能的,但火箭最終會崩潰和燃燒。


無論如何,你不必直接與NinePatchDrawable合作,利用九宮PNG文件。 Android會爲您處理該部分。

取而代之的是,創建一個StateListDrawable的實例,併爲您的每個狀態調用addState()。要獲得該州的Drawable,請從Activity使用getResources().getDrawable(R.drawable.this_is_one_of_your_nine_patch_images)。 Android會檢測到這是一個九塊補丁,並會做正確的事情。