2011-01-20 5 views
3

私はカレンダーアプリを作成しようとしており、おそらくTableLayoutとなるグリッド(週表示)を計画しています。グリッド上にイベントを配置することができます。Android:AbsoluteLayoutの代替手段(私は実際に絶対位置付けが必要です)

ただし、AbsoluteLayoutは推奨されていません。代わりに私は何を使うべきですか?

イベントが重複する可能性があるため、絶対的でないレイアウトを試してみることは本当にばかげていると思います。

多分、私はRelativeLayoutを、それぞれの子ノードに余白と余白を付けて使用するべきです。そのようにするのは奇妙で、効率的ではないかもしれません。これが最善の方法ですか、それとも別の方法がありますか?

答えて

1
  • CommonsWareは私自身のレイアウトマネージャーを書くことを提案し、Christianはそれがより簡単に聞こえると指摘しました。
  • YahelはSurfaceView/OpenGlを提案し、私が望むものを描画します。

私はあなたがRelativeLayoutにあなたの子ビューを追加することにより、絶対位置を再作成し、幅、高さ、marginTopとmarginLeft除いてデフォルト値のみを持つようにRelativeLayout.LayoutParamsを設定することができますがわかりました。上端と左端は、AbsoluteLayoutの上端と左端に似ています。また、負のマージンもサポートされています。

あなたがの右端を越えてオー​​バーフローにあなたのコンテンツを取得に問題がある場合は、画面の密度や幅を占めていることを確認して、向きの変更とAbsoluteLayout

に適用するために使用される絶対位置の他のすべての注意事項あなたのポジティブな左マージンに、同様に負の右マージンを補足してみてください。(original question)

1

ただし、AbsoluteLayoutは推奨されていません。代わりに私は何を使うべきですか?

必要なルールを実装する独自のレイアウトマネージャを作成します。

+1

それはもっと簡単に聞こえますが、彼ができることは最高です:P – Cristian

0
私はお勧めし

のいずれかの簡単な方法行く:

  1. 15(または30)分間隔のためのカレンダー、あなたは絶対positionningを必要としないこの方法を設定します。 15分の間隔を表す線形表示で塗りつぶされたテーブルビューで、これらをイベントで埋めます。

以上の安定/迅速/カスタマイズ方法硬いがたくさん起こって:

  1. SurfaceViewを/しかし、あなたが望むあなた自身を描画にOpenGL。

数字1の問題は、ビューの階層に要素を追加するほど、パフォーマンスが向上するということです。従来の月に3つのアポイントメントを1日持っているとしましょう。あなたの階層はレンダリングするのに非常に長くなり、メモリが重くなる百回のビューで満たされます。

数字2の問題点:最初はコード化するのがずっと難しくなりました。独自のレイアウトマネージャを作成する必要がある場合は、サーフェイスビューまたはOpenGLに移動しないでください。

+0

イベントを「RelativeLayout」に追加し、 'child.setPadding(left、top、0、0)'を使用する際の注意点それらを左上隅からずらすには? –

+0

私が見ることができる唯一のものは、RelativeLayout内のすべてがシフトダウンされるということです。そして、あなたはrelativelayoutの上からではなく、最後の子供の底から正確であるために次の子供の詰め物を計算しなければならないでしょう。 – Yahel