iPhone のUITabBarに似たコントロールを作成する必要があります。これは、アプリケーションのすべてのアクティビティに存在します。UITabBar は基本的に、 TABのような動作を示す一連のボタンです。すべてのボタンがアクティビティにマップされます。
これには2つの解決策があります:
すべてのアクティビティのレイアウト XML に、
<LinearLayout><Button/><Button/><Button/></LinearLayout>
要素を挿入します。次に、ボタンのクリックを処理する共通のリスナー クラスを作成します。したがって、すべてのアクティビティにはこのリスナーのインスタンスがあります。LinearLayout クラスを拡張するカスタム Widget を作成するには、すべてのボタンを静的メンバーとして配置し、ボタンのクリックを処理させます。このカスタム コントロールをすべての画面に含めます。
どのアプローチに従うべきかわかりません。ご意見をお聞かせください。代替案も高く評価
以下は、上記のアプローチについて私が考えるものです:
最初のアプローチの問題:
多くのボイラープレート コード (findViewByIds、setOnClickListener など) が生成されます。
5 つのアクティビティと 3 つのタブ ボタンがあると仮定すると、実行時に作成される Button オブジェクトの総数は 5 x 3 = 15 になります。
次の理由により、2番目のアプローチを採用したいと思います。
すべてのコード (状態と動作) は、ウィジェット クラスによってカプセル化されます。ボイラープレート コードが少ない。
ボタンは静的メンバーになるため、実行時に作成される Button オブジェクトの総数は 3 つだけになります。ただし、静的メンバーは (JVM がクラスをアンロードするまで) 長時間メモリに残りますが、コントロールはすべての画面に存在するため、これは許されると思います。
ありがとう。