2012-01-24 24 views
1

任何一個請指導我,安卓:如何創建自定義組件

如何創建XML和Java文件

  1. 傳球XML屬性(這個我有點完成)自定義組件

  2. 如何從新的customClass() - 構造函數方法動態地傳遞屬性。 - 我不知道如何實現這一點

例如:我創建了一個具有兩個textview作爲一個組件的自定義組件。在xml中,我通過xml屬性創建了兩個組件。現在我想創建兩個新的組件通過調用我的customClass.java的構造函數的代碼 我不知道如何從Java代碼動態創建一個新組件,以及如何顯示在視圖中(說相對佈局)請幫助我提供任何鏈接或博客。

我花了1周的時間,但我沒有得到任何解決方案,請幫助我

回答

1

它很簡單:

在佈局xml文件

簡單地把XML代碼下面幾行:

<com.example.project.MyComponent 
    android:id="@+id/myid" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
/> 

現在,寫一個命名爲您的組件類:

public class MyComponent extends RelativeLayout { 
    public MyComponent(Context context, AttributeSet attr) { 
    super(context,attr); 
    } 

    @Override 
    public void onFinishInflate() { 
    // this is the right point to do some things with View objects, 
    // as example childs of THIS View object 
    } 
} 

雷默mber的構造函數:這個構造函數需要由LayoutInflater以 找到你的組件。而且,不要忘記在需要時調用超級(...)。

+0

我不知道,如果你的自定義標籤將工作,但我知道這個作品: Lumis

+0

我的例子擴展了一個相對佈局 - 你不必填寫像ImageViews,TextViews或其他兒童;) – Andreas

+0

@Andreas Bf - 感謝您的迴應。公共MyComponent(上下文上下文,AttributeSet attr)此構造函數在從xml文件傳遞attr時調用。這部分我完成了。我想從java代碼創建組件(而不是從xml佈局)。像調用構造函數public MyComponent(Context context){...}我必須從java代碼傳遞值/ attr。 – Viran

0

你可以通過在其參數中調用具有上下文的構造函數,然後使用getter setter設置屬性來完成。您可以在Android tech point

MyComponent mycomponent = new MyComponent(context); 
myComponent.setFirstTextView("text1"); 
myComponent.setSecondTextView("text2"); 

找到一個很好的教程,然後終於

layout.addView(myComponent);