0

ですから、タイトルは少しわかりにくいですが、基本的には、画面の中央に表示される背景と境界線が色付きで、引き伸ばされていない通知ボックスが必要です。

すでにカスタムビューがあり、背景と境界線を作成していますが、「width:fill_parent」と「height:wrap_content」を作成すると画面の上部に表示され、fill_parentに高さを指定すると画面全体が表示されます。背景でいっぱいになります(私はそれが起こることをちょっと知っていました)。

また、layout_gravityをcenterに設定するという、より単純なアプローチを試しましたが、役に立ちませんでした。ビューは垂直線形レイアウト内にあり、その中の唯一の表示可能なビューです(他のすべての要素にはvisibility = View.GONEがあります)。

カスタムビューのonDraw()をコーディングして、height:fill_parentを配置し、wrap_contentルールに従う背景を設定するにはどうすればよいですか?よりシンプルで優れたソリューションもいつでも歓迎します。

4

1 に答える 1

1

問題は、LinearLayoutにネストされていることだと思います。

FrameLayoutで試してみてください

「単一のアイテムを表示するために画面上の領域をブロックするように設計されています」

これで、カスタムビューを透明な背景のFrameLayoutの中央に配置できるようになります。

編集:なぜLinearLayoutが問題だと思うのかを明確にするため。LinearLayoutはスタックのようにいっぱいになります。そのため、重力で中心に配置しようとすると、アイテムが一番上に表示されます。プレートのスタックを想像すると...真ん中から始めることはできません:-)

于 2012-09-24T17:58:58.883 に答える