2016-08-05 8 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의 왼쪽과 오른쪽의 여백이 있습니다. 휴대 전화의 너비를 완전히 채우려면 어떻게해야합니까?

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

또는이 같은 style 클래스를 시도 할 수 있습니다 :

+0

집합 'dialog.setLayout (폭, 높이)의 코드;'dialog' 대. – Piyush

답변

1

이 당신을 위해 도움이 될 수있는 허용 된 솔루션은 간단한 작업이다

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

,하지만 당신은 또한 아래에 시도 할 수 있습니다 솔루션도 요구 사항을 달성하기 위해.

1 단계 : 사용자 지정 대화 상자를 만들 때처럼 Dialog 클래스의 서브 클래스를 만듭니다.

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>