2016-08-05 12 views
1

カスタムレイアウトでDialogを作成したいと思います。 widthは電話画面の幅と同じにしてheightWRAP_CONTENTとします。ここでダイアログの幅一致の画面幅を作る方法

は、私が試したものです:

Dialog dialog = new Dialog(context, R.style.DialogSlideAnim); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.dialog_share); 
     dialog.setCanceledOnTouchOutside(true); 

     DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
     int width = metrics.widthPixels; 

     WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); 
     layoutParams.copyFrom(dialog.getWindow().getAttributes()); 
     layoutParams.width = width; 
     layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; 
     layoutParams.gravity = Gravity.BOTTOM; 
     dialog.getWindow().setAttributes(layoutParams); 

問題がdialogが画面幅の約90%を占め、dialogの左右の余裕があるということです。どうすれば電話の幅を完全に埋めることができますか?

+0

セット 'dialog.setLayout(幅、高さ)のコードと、' 'dialog'ため。 – Piyush

答えて

1

これはあなたのために役立つことがあります。

dialog.setContentView(R.layout.my_custom_dialog); 
dialog.getWindow().setBackgroundDrawable(null); 

か、このようなstyleクラスで試すことができます:受け入れソリューションはシンプルかつ作業ですが、あなたはまた、以下を試すことができ

<style name="Theme_Dialog" parent="android:Theme.Holo.Dialog"> 
    ... 
    <item name="android:windowMinWidthMajor">100%</item> 
    <item name="android:windowMinWidthMinor">100%</item> 
</style> 
1

ソリューションも要件を達成する。

ステップ1:カスタムダイアログを作成する場合は、ダイアログクラスのサブクラスを作成します。

public class ARProgressDialog extends Dialog 
{ 
    Activity context; 
    public ARProgressDialog(Context context,int id) { 
     // TODO Auto-generated constructor stub 
     super(context,id); 
     this.context=(Activity) context; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.progress_dialog); // Your custom layout 

     // BELOW CODE IS USED TO FIND OUT WIDTH OF ANY DEVICE 
     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     context.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     int width = displaymetrics.widthPixels; 

     // BELOW CODE IS USED TO SET WIDHT OF DIALOG 
     LinearLayout layout = (LinearLayout)findViewById(R.id.dialogLinearLayout); // this is the id of your parent layout defined in progress_dialog.xml 
     LayoutParams params = layout.getLayoutParams(); 
     params.width = width; 
     layout.setLayoutParams(params);  
     ...// add your remaining code 
    } 

} 

ステップ2:表示するダイアログ。

ARProgressDialog dialog=new ARProgressDialog(this,R.style.MyTheme); 
dialog.show(); 

ステップ3:MyTheme.xml

<style name="MyTheme" parent="android:Theme.Holo.Dialog"> 
    <item name="android:windowBackground">#00000000</item> 
    <item name="android:backgroundDimEnabled">true</item> 
</style> 
関連する問題