0

カスタムアラートダイアログの寸法を画面の向きに基づいて設定します。私の意図は、同じサイズであるように見えるように高さと幅の値を入れ替えることですが、さまざまなデバイスのさまざまな画面サイズを処理しました。Androidの断片化により、すべてのデバイスで同じ効果を達成するのは難しいようです。 Androidの自動サイズ変更は私にとっては奇妙なようです。さまざまな画面方向のカスタムアラートダイアログの寸法を制御します

肖像

alertDialog.width=screen.width*0.8 
alertDialog.height=screen.height=0.5 

風景

alertDialog.width=screen.width*0.5; 
alertDialog.height=screen.height*0.8 

カスタム警告ダイアログが同じコードを使用してJellyBean(少なくとも4.2)からAndroidのバージョンをサポートしなければならないことに注意してくださいにNougat(7)。

私はandroid.app.Dialogは(古いもの)今は避けるべきであると仮定しandroid.support.v7.AlertDialog(入手可能な最新のもの)

を使用しています

また、私は黒の境界線を必要とします同じもののための白い背景。 windowMinWidthMajorとアンドロイド:私

(私は角丸のために透明性を必要とする)、すべてのデバイスで同じ効果を達成することができません私はアンドロイドを使用しているwindowMinWidthMinorを、彼らは、レイアウト(縦向きと横向きの両方に影響を与えます)、コンテンツが指定された制約内に収まらない場合は無視されるようです。

は、私はそこにいたことを望むアンドロイド:windowMaxWidthMinor & アンドロイド:windowMaxWidthMajor

+0

透明な影や白い背景など、ダイアログの表示を制御するため、DialogThemeを調べることができます。ダイアログの幅は50%ですが、Androidはあなたのためにダイアログのサイズを変更します。最善の策は、テーマを変更して幅を制御するためのディメンションを使用することです。または、ダイアログがビューに追加されるまで待つ必要がありますが、表示されていない場合は高さと幅を変更する必要があります。 –

答えて

0

これは私がページ上の特定のビューのサイズを変更するために使用されてきたものです:

myView.getViewTreeObserver().addOnGlobalLayoutListener(() -> { 
    item.height = myView.getHeight(); 
}); 

あなたがしたいことにそれを適用する:

myView.getViewTreeObserver().addOnGlobalLayoutListener(() -> { 
    LayoutParams params = (get the layout params according to the layout); 
    params.width = myView.getWidth() * 0.5; 
    params.height = myView.getHeight() * 0.8; 
    myView.setLayoutParams(params); 
}); 

オブジェクトはビュー・ツリーに追加され、表示されるために測定され、表示されますが、まだ表示されないため、リスナーを使用する必要があります。

0

更新

私はそれが私のレイアウトのためのandroid:layout_centerInParent="true"を設定することで達成できます。スタイルの各コンポーネントのレイアウト値を

android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:gravity="center" 
android:layout_gravity="center" 

に設定して中央揃えを実現します。https://github.com/computingfreak/CFTest/blob/master/app/src/main/res/layout/alert_popup.xml https://github.com/computingfreak/CFTest/blob/master/app/src/main/java/net/cf/sms/cftest/MainActivity.java

でのJavaコードが利用可能

でご利用いただけます

XMLコード私はこのコード行が

view.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 

冗長であるため、寸法やサイズ変更を決定するには、Androidシステムにそれを左の不思議コンテンツに基づいてそれは私の場合には機能しますが、長いテキストの場合は失敗します。恐らく何らかのスクロールレイアウトが役に立ちます。乾杯!

関連する問題