2011-08-09 9 views
0

ほとんどの場合正しく動作するカスタムのNumberPickerを作成しようとしました。唯一の問題は、動的に作成されるレイアウトです。レイアウト(上面とで、「+」「 - 」ポートレートモードで底部に)LinearLayout(ダイナミック)と画面の向きの問題

  • 二つのボタンで構成されてコンストラクタで
  • 1編集

(「NumberPickerはのLinearLayoutを拡張します」 )レイアウトにaddView()を使用して3つのコンポーネントを追加します。

このレイアウトをランドスケープモードで表示する場合は、「+」と「 - 」は上端と下端には表示されませんが、右端と左端には表示されません。 NumberPickerが大きすぎます。

onConfigurationChangedイベントを使用して、ユーザーが画面の向きを変更し、LinearLayoutの向きを水平および垂直に設定しているかどうかを確認します。問題は、 "+"ボタンと " - "ボタンが間違った位置にあることです。このようにする必要があります(例:横長):

" - " |編集| "+"

しかし、それはこのようになります。

"+" |編集| " - "

どうすればこの問題を解決できますか?私は正しい順序でボタンを持っていたいと思います。 XMLを使用して問題を解決できますか?

ありがとうございます。

答えて

0

XMLを使用しないで問題を解決する方法はおそらくありますが、それは悪い考えではないと思います(たとえば、getLayoutInflater().inflate()を使用して、NumberPickerにキャストできるViewを返します)。

(XMLファイルのconfigurationChanges="keyboardHidden|orientation"を使用して)手動で構成変更を処理する場合は、上記のスニペットを使用してXMLファイルを再取得する必要があります。そうしないと、ローテーション時にアクティビティが破棄され、適切なリソースが自動的に取得されます。あなたのポートレートのXMLファイルをlayoutフォルダに配置し、もう1つをlayout-landに配置すると、それはすべてうまくいくはずです。

+0

これはXMLとLayoutInflaterで動作します。ありがとうございました! – Dekar

0

2つの異なるレイアウトxmlを持つことができます.1つはポートレート用、もう1つはランドスケープ用です。ランドスケープの場合、プラスのボタンの前にプラスボタンの前にマイナスボタンを置くことができます。

+0

ありがとうございました。しかし、XMLファイルをLinearLayoutを継承するNumberPickerクラスにどのようにロードすることができますか? – Dekar

+0

http://www.ctctlabs.com/index.php/blog/detail/android_dont_overlook_viewswitcher/ viewswitcherを使用してビュー間をスワップすることができます –