カスタム コントロールの作成またはボタンのインライン作成
-
20-09-2019 - |
質問
次のようなコントロールを作成する必要があります UITタブバー iPhone では、アプリケーションのすべてのアクティビティに存在することになります。UITabBar は本質的には ボタンの電池 を展示する タブ 同様の行動:すべてのボタンがアクティビティにマップされます。
これに対する解決策は 2 つあります。
すべてのアクティビティのレイアウト XML に、
<LinearLayout><Button/><Button/><Button/></LinearLayout>
要素。そして、ボタンのクリックを処理する共通のリスナー クラスを用意します。したがって、すべてのアクティビティにはこのリスナーのインスタンスがあります。LinearLayout クラスを拡張するカスタム ウィジェットを作成するには、すべてのボタンをその静的メンバーとして配置し、ボタンのクリックを処理させます。このカスタム コントロールをすべての画面に含めます。
どのアプローチに従うべきかわかりません。ご意見をお聞かせください。代替品も高く評価されています
上記のアプローチについて私が考えていることは次のとおりです。
最初のアプローチの問題:
多くの定型コード (findViewByIds、setOnClickListener など) が生成されます。
5 つのアクティビティと 3 つのタブ ボタンがあると仮定すると、実行時に作成される Button オブジェクトの総数は 5 x 3 = 15 になります。
次の理由から、2 番目のアプローチを採用したいと思います。
すべてのコード (状態と動作) はウィジェット クラスによってカプセル化されます。定型コードが少なくなります。
ボタンは静的メンバーになるため、実行時に作成される Button オブジェクトの総数は 3 つだけになります。ただし、コントロールはすべての画面に存在するため、静的メンバーはメモリ内に長時間(JVM がクラスをアンロードするまで)残りますが、これは許容できると思います。
ありがとう。
解決 2
残念ながら、私はそれがUITabBarのように見えるようにビルトインTabWidgetをカスタマイズする方法を見つけることができませんでした。だから、私は(第2のアプローチを取る)カスタムコントロールを作成して、静的メンバとしてのボタンを持っているつもりです。予想通りコントロールがクリックを処理します。
私ものPlinkアートアプリケーション賞を受賞されたiPhoneはUITabBarに似ているタブコントロールを持っていることがわかりました。
他のヒント
Android の既存の TabWidget 実装を使用しないのはなぜでしょうか?
http://developer.android.com/guide/tutorials/views/hello-tabwidget.html
独自のウィジェットを実装すると余分な作業が発生するだけでなく、プラットフォーム上の他のアプリと比較すると場違いに感じられる可能性があります。
特に、私が感じている問題は次のとおりです。
システムの更新によりタブ バーの外観が変更された場合は、コードを書き直す必要があります。また、組み込みのタブ バーの外観と操作感が完全に一致する可能性はほとんどありません。(OS X 上の Java を考えてください。)
ユーザーがタブをクリックするたびに、別のアクティビティがスタックに追加されます。これはメモリの無駄であるだけでなく、ユーザーが電話機の戻るボタンをクリックするたびに、前のタブに移動することになります。これはタブ バーが本来機能する方法ではありません。