2016-12-23 1 views
0

픽셀 단위로 AlertDialog의 너비를 얻고 동적으로 너비를 설정하려고했습니다.AlertDialog의 넓이 (픽셀 단위 또는 픽셀 단위)

getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int width = displaymetrics.widthPixels; 

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
lp.copyFrom(dialog.getWindow().getAttributes()); 
lp.width = width; 
lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
lp.gravity = Gravity.CENTER; 

dialog.getWindow().setAttributes(lp); 

위 코드는 저에게 적합하지 않았습니다. 또한 나는 here과 같은 다른 코드도 따라 갔지만 아무도 도움이되지 않았습니다.

AlertDialog을 픽셀 단위 또는 dp로 가져오고 설정하는 방법은 무엇입니까? 의 사용자 정의 대화 상자가, 루트 뷰를 가지고가는 경우에

+1

링크 된 솔루션에서 어떤 코드를 시도 했습니까? –

답변

1

만 widht 얻을 볼의 높이 수 그래서 친절

다음
RelativeLayout rl = (RelativeLayout) dialog.findViewById(R.id.root_relative_layout); 

상대의 레이아웃이 전부에있는 부모 뷰와 구성 요소의 예를 따르십시오. 이제

은 높이와 너비가 이렇게 얻을 : -

int width = rl.getWidth(); 
int height = rl.getHeight(); 

widht 설정하고 높이가이

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(layout); 
    builder.setTitle("Title"); 
    alertDialog = builder.create(); 
    alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. 
    alertDialog.show(); 

또는

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 

lp.copyFrom(alertDialog.getWindow().getAttributes()); 
lp.width = 150; 
lp.height = 500; 
lp.x=-170; 
lp.y=100; 
alertDialog.getWindow().setAttributes(lp); 
0

코드 아래 교체하십시오

dialog.getWindow().setLayout(getResources().getDimensionPixelSize(R.dimen.layout_height_400dp), WindowManager.LayoutParams.MATCH_PARENT); 
관련 문제