2012-06-10 2 views
4

위젯의 너비가 "180dp"입니다. 사용자가 위젯의 버튼을 클릭 할 때 활동을 표시하고 활동의 너비가 위젯의 너비와 같아야합니다. 간단하지만 난 해결할 수 없습니다. . 나는이 세 가지 방법 중 적어도 하나는 나를 도울 것이라고 생각하지만, 그렇지 않습니다.
1- 매니 페스트에서 활동의 크기를 정확하게 "180dp"로 설정하지만 "android : width"와 같은 속성을 찾을 수 없습니다. 매니페스트의 액티비티 태그입니다. .
2-intent.getSourceBounds()에 의해 의 AppWidgetProvider, onReceive() 메소드 년대 getWidth() 위젯 크기를 얻기 및 활동의 onAttachedToWindow()에 사용 :
의 AppWidgetProvider 물 :Android 위젯 크기?

@Override 
public void onReceive(Context context, Intent intent) { 

      ... 
      int mWidgetHeight = intent.getSourceBounds().height(); 
      int mWidgetWidth = intent.getSourceBounds().width(); 
      ... 
      App.setmWidgetHeight(mWidgetHeight); 
      App.setmWidgetWidth(mWidgetWidth); 
      ... 

    } 
활동에

:이 경우

@Override 
public void onAttachedToWindow() { 

     View view = getWindow().getDecorView(); 
     WindowManager.LayoutParams lp = (LayoutParams) view.getLayoutParams(); 
     lp.gravity = Gravity.LEFT | Gravity.TOP; 

     super.onAttachedToWindow(); 
     ... 

     lp.width = App.getmWidgetWidth(); 
     lp.height = App.getmWidgetHeight(); 
     ... 
     getWindowManager().updateViewLayout(view, lp); 
    }  

, 내가 에뮬레이터에서 내 응용 프로그램을 테스트, 활동의 폭은 AB에 위젯 너비의 반쪽.
-3- 픽셀에 "180 DP 변경": 2/3 (이때

@Override 
public void onAttachedToWindow() { 

    View view = getWindow().getDecorView(); 
    WindowManager.LayoutParams lp = (LayoutParams) view.getLayoutParams(); 
    lp.gravity = Gravity.LEFT | Gravity.TOP; 
    ... 
    super.onAttachedToWindow(); 
    ... 
    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    float xDpi = metrics.xdpi; 
    float yDpi = metrics.ydpi; 
    ... 
    lp.width = (int) (180 * (xDpi/160)) ; 
    lp.height = (int) (120 * (yDpi/160)); 
    ... 
    getWindowManager().updateViewLayout(view, lp); 
}  

, 에뮬레이터 결과에서 잘 보이지만 장치 (GalaxyTab 2.3.3)에서 활동의 폭은 약에) 위젯의 너비.
요약하면 이것은 내 질문입니다.
위젯의 크기가 dp 인 경우 Activity의 크기를 정확하게 설정하는 방법은 무엇입니까?

답변

-1

시도

그냥 호기심
DisplayMetrics metrics = getApplication().getApplicationContext().getResources().getDisplayMetrics(); 
metrics.widthPixels 
metrics.heightPixels 

- 왜 당신이 당신의 활동의 정확한 크기를 설정해야합니까? android : layout_width = "fill_parent"android : layout_height = "fill_parent"는 크기에 상관없이 위젯에서 사용 가능한 모든 공간을 사용합니다.