2012-06-18 2 views
3

태블릿 용 Android 애플리케이션을 최적화하고 있습니다. 대부분의 응용 프로그램에서는 조각을 사용하지만 일부 설정 화면에서는 태블릿 대화 상자로 화면을 시작하기 만하면됩니다. 이를 위해, 우리는 매니페스트활동을위한 최대 높이 설정 방법 (테마 대화)

<activity 
    android:name="com.company.app.EditTaxTypeSettingsActivity" 
    android:theme="@style/ActivityTheme"> 
</activity> 

의 활동의 테마를 설정하고 여기에 (고해상도/값-큰-V11에) 테마의 :

<?xml version="1.0" encoding="utf-8"?> 
<resources>   
    <style name="ActivityTheme" parent="@android:style/Theme.Holo.Light.Dialog">  
    <item name="android:windowIsFloating">true</item> 
    </style> 
</resources> 

활동 오픈이 테마를 사용하여 대화 상자는 가로 방향으로 잘 보입니다. 그러나 세로 모드에서는 대화 상자가 화면을 수직으로 채우며 바보처럼 보입니다.

이 대화 상자의 최대 높이를 어떻게 설정할 수 있습니까? 내가 설정 <item name="android:maxHeight">500dip</item> 테마의 maxHeight 특성을 시도했지만 활동 내용 자체보다는 활동 내용 주위의 대화 상자 컨테이너를 참조하는 것으로 보인다. (즉, Activity 테마의 높이를 500dip으로 설정하면 대화 상자의 대화 상자 제목 영역이 매우 커집니다)

xml (RelativeLayout) 액티비티의 크기 설정을 시도했지만 설정할 수 없습니다. maxHeight, 높이만 설정할 수는 있지만 저장 및 취소 단추가 android:layout_alignParentBottom="true"으로 설정되어 있기 때문에 높이를 하드 코딩 할 수 없으므로 키보드가 튀어 나오면 키보드 위에 남아있을 수 있습니다. (액티비티 레이아웃 높이를 하드 코딩하여 키보드 상단에 저장/취소 버튼이 남지 않도록하십시오.)

감사합니다. 대화방 높이를 최대로 설정하는 방법을 알고 계십니까?

+0

내가 혼란 스러워요 당신이'Dialog'로 그 자체로'Fragment'를 사용하는 이유. 그냥'DialogFragment'를 사용하십시오. 그것은 당신이 보여주고 자하는 것을 맞추기 위해 당신이 필요로하는 정보의 크기를 정확하게 맞출 것입니다. – Andy

+0

@Andy - 이들은 휴대폰 용으로 설계된 활동입니다. 우리는 전혀 새로운 활동을 시작하기를 원하지 않습니다. 적은 양의 정보만으로 전체 태블릿 화면을 차지하게됩니다. 파편보다는 대화 상자로 더 잘 작동하기 때문에 전화 활동을 조각으로 변환하지 않기로 결정했습니다. 오히려 대화 상자로 열려고합니다. 그래서 그들은 파편이 아닌 활동입니다. 감사. – Dittimon

+0

오, 알았어. 그래서 당신이 말하는 것은 당신은 여전히 ​​활동을 가질 것이지만 전화로 설계된 활동을 태블릿을위한 대화 상자로 원하십니까? – Andy

답변

2

이 메서드를 사용하여 Dialog 테마를 사용하여 활동에 대한 Window 높이를 고정합니다. setContentView()이 (가 wrap_content에 창 레이아웃을 재설정) 이후

public static void maxinumDialogWindowHeight(Window window) { 
    WindowManager.LayoutParams layout = new WindowManager.LayoutParams(); 
    layout.copyFrom(window.getAttributes()); 
    layout.height = WindowManager.LayoutParams.FILL_PARENT; 
    window.setAttributes(layout); 
} 

그리고 그것을 사용 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.messages); 
    if (getWindow().isFloating()) ViewHelper.maxinumDialogWindowHeight(getWindow()); 

    // rest of your code... 
}