2012-06-15 43 views
0

我需要一個圓形對象,如下所示: circle如何製作/使用自定義圈子?

的名稱和數量從數據庫中提取信息,並顯示每個圓圈。 圓需要點擊,所以我想延長Button類。

我在做onDraw和onMeasure方法做什麼?同樣一旦創建,我該如何使用這個類?我怎樣才能調用這個組件在其他組件視圖中顯示在我的屏幕上?

編輯:我已經看了很多帖子和一些教程,並沒有一個太有用了「自定義視圖」

回答

0

你不需要擴展按鈕類來做到這一點。

如果我是你,我可能甚至不會自定義視圖,我會在其中使用帶有2個TextView的LinearLayout。而線性佈局的背景我將設置爲圓形的PNG。

這樣的事情將是XML;

<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@drawable/circle" 
android:orientation="vertical" 
android:id="@+id/circleLyt"> 

<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/nameTxt" 
/> 

<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/countTxt" 
/> 

</LinearLayout> 

請務必將circle.png放入您的drawable文件夾中。 您可以通過findViewById();獲得對所有這些視圖的引用。因此,一旦您引用了TextView,就可以將文本設置爲任何您需要的內容。使用LinearLayout參考,您可以按照與按鈕相同的方式在其上設置單擊監聽器。

像這樣的工作:

mCircleView = (LinearLayout)findViewById(R.id.circleLyt); 
mCircleView.setOnClickListener(new OnClickListener() { 
    public void onClick(View v){ 
     //do some stuff! 
    } 
}); 

你甚至可以做這樣的佈局作爲自己的XML文件,並使用適配器能夠填補一些其他結構,這些圈子就像一個GridView可能。你只需要膨脹視圖並填充適配器getView()方法中的文本。

+0

這樣做的一個潛在問題是,佈局將包裝到它的內容(TextViews)中,而不必保持方形,從而創建扁平的橢圓形而不是圓形。此外,可以將clickable =「true」和onClick =「clickedFunction」設置爲以編程方式創建OnClickListener的替代方法。 – Xono

+0

這兩點都是正確的。將png文件製作成9-patch可以解決大部分潛在問題。或者,可以給LinearLayout一個靜態的寬度和高度。 onClick()也會這樣工作。我剛剛學習了內部類,仍然這樣做,因爲它爲我調試更快。 – FoamyGuy

+0

我想要自定義視圖的原因是我希望以編程方式在我的代碼中創建6個這樣的圈子。我可以用這個XML佈局來做到這一點嗎?此外,我想根據適合6縮放圓圈的大小到屏幕大小...我如何才能做到這一點在XML中,如果我只是設置圖像? – kaid

0

最可能的是,你並不需要一個自定義的視圖來實現這一任務。使用帶有Circle的background的TextView就足夠了。

如果是簡單的圓圈,請參考drawable resource documentation瞭解詳情;或者您可以創建自定義drawable(可以在畫布上繪製)並將其作爲backgroundDrawable提供。

+0

能否詳細說明自定義drawable更多?我想縮放這個圓以適應屏幕6,我寧願使用android的繪圖功能,而不是提供位圖。我認爲這看起來更清脆。 – kaid

相關問題