2012-06-25 13 views
1

나는이 내용으로 대화를을 밀어 수직으로 전체 대화 상자를 작성 가능하다면. 그러나 LinearLayout의 내용이 너무 크면 ScrollView가 대화 상자를 채우고 닫기 버튼이 아래쪽으로 밀려서 보이지 않는 것을 발견했습니다.있는 ScrollView는 RelativeLayout의 다른 뷰

내가 시도한 한 가지 방법은 Button layout_alignParentBottom = "true"를 만들고 ScrollView layout_above = "@ + id/closebtn"을 만드는 것이었지만 대화 상자는 항상 세로로 전체 화면을 채우기 위해 늘어납니다. LinearLayout은 정말 짧습니다.

답변

0

RelativeLayout을 LinearLayout으로 변경하여이 작업을 수행했습니다. 나는 그것을 시도하지 않았을 때 내 크고 마른 대화 상자 (내부 LinearLayout에는 ImageViews와 TextViews가 포함되어 있기 때문에)를 원래 만들지 않았습니다. 그러나 놀랍게도 width = fill_parent에서 wrap_content로 모든 뷰를 변경하면 대화 상자가 화면을 채우기 위해 수평으로 늘어나서 원하는대로 화면이 올바르게 동작합니다.

0

프로그래밍 방식으로 화면의 높이를 가져 와서 스크롤보기의 높이를 수동으로 지정하는 방법이 있습니다.

은 (픽셀) 스크린 크기를 얻으려면 :

Get screen dimensions in pixels

문제하여 버튼의 높이는 픽셀 밀도에 기초하여, 각 화면의 화소의 다른 숫자, 아직 버튼한다는 것이다 DP 양이 정해집니다.

XML에서 DP의 버튼 높이를 설정하십시오.

그런 다음 버튼의 높이가 몇 픽셀인지 계산하십시오. 참조 : What is the difference between "px", "dp", "dip" and "sp" on Android?

그런 다음 버튼 높이를 뺀 값을 사용하여 버튼의 레이아웃 매개 변수에서 설정할 수있는 크기를 결정할 수 있습니다.

LayoutParams params = findViewById(R.id.your_scroll_view).getLayoutParams(); 
params.height = screenHeight - buttonHeight; 
+0

나는이 것 크기가 대화 상자 아래로 그냥 내용을 경우에 맞게 생각하지 않는다 그들은 모두 화면 크기 내에 들어갈 수 있습니다. – Travis

0

은 당신이 전화 후 :

AlertDialog dialog = builder.show();  

다음 전화 :

fixScrollViewHeight(scrollView); 

//

private void fixScrollViewHeight(ScrollView scrollView) { 
    int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight(); 
    LayoutParams lp = scrollView.getLayoutParams(); 
    lp.height = screenHeight/3; 
    scrollView.setLayoutParams(lp); 
} 
관련 문제