0

iPhone のUITabBarに似たコントロールを作成する必要があります。これは、アプリケーションのすべてのアクティビティに存在します。UITabBar は基本的に、 TABのような動作を示す一連のボタンです。すべてのボタンがアクティビティにマップされます。

これには2つの解決策があります:

  1. すべてのアクティビティのレイアウト XML に、<LinearLayout><Button/><Button/><Button/></LinearLayout>要素を挿入します。次に、ボタンのクリックを処理する共通のリスナー クラスを作成します。したがって、すべてのアクティビティにはこのリスナーのインスタンスがあります。

  2. LinearLayout クラスを拡張するカスタム Widget を作成するには、すべてのボタンを静的メンバーとして配置し、ボタンのクリックを処理させます。このカスタム コントロールをすべての画面に含めます。

どのアプローチに従うべきかわかりません。ご意見をお聞かせください。代替案も高く評価

以下は、上記のアプローチについて私が考えるものです:
最初のアプローチの問題:

  1. 多くのボイラープレート コード (findViewByIds、setOnClickListener など) が生成されます。

  2. 5 つのアクティビティと 3 つのタブ ボタンがあると仮定すると、実行時に作成される Button オブジェクトの総数は 5 x 3 = 15 になります。

次の理由により、2番目のアプローチを採用したいと思います。

  1. すべてのコード (状態と動作) は、ウィジェット クラスによってカプセル化されます。ボイラープレート コードが少ない。

  2. ボタンは静的メンバーになるため、実行時に作成される Button オブジェクトの総数は 3 つだけになります。ただし、静的メンバーは (JVM がクラスをアンロードするまで) 長時間メモリに残りますが、コントロールはすべての画面に存在するため、これは許されると思います。

ありがとう。

4

2 に答える 2

0

残念ながら、組み込みの TabWidget をカスタマイズして UITabBar のように見せる方法が見つかりませんでした。そのため、カスタム コントロールを作成し、Buttons を静的メンバーとして使用します (2 番目の方法を使用します)。コントロールは期待どおりにクリックを処理します。
受賞歴のある Plink Art アプリケーションにも、iPhone の UITabBar に似たタブ コントロールがあることに気付きました。

于 2009-12-25T08:05:22.537 に答える