2011-11-17 3 views
1

내 대화에 대한 최대 폭을 설정하고 그 사용자 지정 테마로 다음 코드를 사용 :는 루트에 대한의 LinearLayout을 사용하고 내 대화

<style name="HuskyBusDialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowBackground">@drawable/panel_background</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
</style> 

는 최대 폭을 설정할 수 있습니까? 휴대 전화에서는 괜찮지 만 태블릿 용으로 최적화하려고하면 너무 큽니다.

답변

1

너비는 선형 레이아웃의 경우 XML에 적용되며 스타일에 적용되지 않습니다. XML에 android:layout_width 태그를 사용하여 가능한 범위를 지정하십시오.

0

yeaa 경우 유 싶어 UR XML 에 대한 Widht GO와 함께 할 및

android:layout_width="Defined in pixels//20px" 

을하려고 또는 u이 또한

android:width="Defined in pixels// 30px" 

내가 그것을 U에 hepful 될 것입니다 희망을 시도 할 수 있습니다

1

오래된 질문이지만 대답은 적합하지 않지만 여기에서 몇 가지 힌트를 찾을 수 있습니다. How to customize the width and height when show an Activity as a Dialog

너비와 높이를 사용자 정의하는 데 도움이되지만 최대 너비와 높이를 설정하는 것은 아닙니다! 대화 테마를 사용하여 작업을 수행하려면 두 가지 작업을 수행해야했습니다.

1) 대화 상자 레이아웃이 설정된시기를 알 수 있도록 레이아웃 수신기를 설정합니다.

getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(
      new OnGlobalLayoutListener() 
    { 
     @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
     @SuppressWarnings("deprecation") 
     @Override 
     public void onGlobalLayout() 
     { 
      adjustDialog(); 
     } 
    }); 
: 크기가 원하는 한도를 초과 인 경우

2) 효과적으로 최대 크기 여기

을 설정 된 setContentView (후에 호출 내가 현재 사용하고 작업 조각을) 대화 상자의 레이아웃입니다 조정

대화 상자 크기 조정 (실제 화면 크기의 백분율) :

private void adjustDialog() 
{ 
    Window w = getWindow(); 
    w.setGravity(Gravity.CENTER); 

    int current_width = w.getDecorView().getWidth(); 
    int current_height = w.getDecorView().getHeight(); 

    WindowManager.LayoutParams lp = w.getAttributes(); 

    DisplayMetrics dm = getResources().getDisplayMetrics(); 
    int max_width = (int) (dm.widthPixels * 0.90); 
    int max_height = (int) (dm.heightPixels * 0.90); 

    if (current_width > max_width) 
    { 
     lp.width = max_width; 
    } 
    if (current_height > max_height) 
    { 
     lp.height = max_height; 
    } 

    w.setAttributes(lp); 
} 
관련 문제