[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
質問
マイナスマージンのデモ
シナリオ
ビューの 1 つに負のマージンを設定して、他のビューのバウンディング ボックスに侵入させることで、ビューをオーバーラップさせます。
感想
本来であれば、レイアウトが重なって期待通りに動作しそうです。しかし、知らず知らずのうちに正しいことを行わなかったために、より大きな問題に遭遇することは避けたいと思います。エミュレーター、物理デバイス、その他何でも、負のマージンを使用すると、すべてが正しく動作するように見えますが、あるビューが別のビューのバウンディング ボックスに侵入し、レイアウトでどのように宣言されるかによって、他のビューの上になるか下になるかが異なります。
私はまた、API 21 以降では
translationZ
と
elevation
属性は、ビューを他のビューの上や下に表示させることができますが
が気になります。
は、基本的に
を使用することです。
に対して
layout_margin
属性のために、以下のように明確に指定されています。
のマージン値は正であるべきです。
と明記されています。
抜粋です。
このビューの左側、上側、右側、下側に余分なスペースを指定します。このスペースは、このビューの境界の外側にあります。 マージンの値は正数でなければなりません。 . これは浮動小数点数に "14.5sp" のような単位を付加した次元値である必要があります。利用可能な単位は、px(ピクセル)、dp(密度非依存ピクセル)、sp(優先フォントサイズに基づく拡大縮小ピクセル)、in(インチ)、mm(ミリメートル)...です。
最初にこの質問をしたときから数年間、私はネガティブマージンについて何の問題もありませんでした。 ではなく そのため、ドキュメントにそのように記載されていても、私はあまり心配していません。
どのように解決するのですか?
2010 年に、@RomainGuy (Android のコア エンジニア) は次のように述べています。 負の余白の挙動が不定であった .
2011 年、@RomainGuy は次のように述べました。
にネガティブマージンを使用することができます。
LinearLayout
と
RelativeLayout
.
2016年、@RomainGuyは次のように述べています。
で公式にサポートされたことはなく、今後もサポートされることはない。
ConstraintLayout
.
しかし、この制限を回避するのは簡単です。
ベースビューの下部にヘルパービュー (高さ 0dp、幅は親に拘束) を追加し、下部に必要なマージンを追加します。
次に、ビューをこのビューの下に配置し、効果的に負のマージンを持つことを可能にしますが、サポートされていない負の値を使用する必要はありません。
関連
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] react nativeアプリのバージョン番号を更新する方法
-
[解決済み] Android XMLでテキストに下線を引くには?
-
[解決済み] Android 6.0でBluetooth Low Energyスキャンを使用するには位置情報を有効にする必要があります。
-
[解決済み] Androidで他のアクティビティを呼び出すときにアニメーションを表示させるには?
-
[解決済み] Fragment ActionBarCompatの内部からgetSupportActionBarを取得する。