0

次のように円オブジェクトが必要です: サークル

name と count は DB から情報を抽出し、サークルごとに表示します。円はクリック可能にする必要があるため、Button クラスを拡張することを考えています。

これを作成するには、onDraw メソッドと onMeasure メソッドで何をすればよいですか? また、一度作成したら、このクラスをどのように使用しますか? このコンポーネントを呼び出して、他のコンポーネント ビューとともに画面に表示するにはどうすればよいですか?

編集:私は多くの投稿といくつかのチュートリアルを読みましたが、「カスタマイズされたビュー」にはあまり役に立ちませんでした

4

2 に答える 2

0

ほとんどの場合、このジョブを達成するためにカスタム ビューは必要ありません。background円でTextView を使用するだけで十分です。

単純な円の場合、詳細についてはドローアブル リソースのドキュメントを参照してください。または、カスタム ドローアブル (キャンバスに描画できる) を作成し、それを backgroundDrawable として提供することもできます。

于 2012-06-15T01:06:39.050 に答える
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();には、TextViews への参照を取得したら、テキストを必要なものに設定できます。また、LinearLayout リファレンスを使用すると、ボタンの場合とまったく同じ方法でクリック リスナーを設定できます。

このようなものはうまくいきます:

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

このレイアウトを独自の xml ファイルとして作成し、Adapter を使用して、おそらくGridViewのようなこれらの円で他の構造を埋めることもできます。ビューを膨らませて、アダプタの getView() メソッド内にテキストを入力するだけです。

于 2012-06-15T01:08:06.080 に答える