2012-06-23 60 views
0

這是我的問題。我有一個appwidget,可以在肖像屏幕方向上完美地工作。但是,當我將屏幕方向改爲橫向時,我的appWidget的寬度和高度由主屏幕啓動程序自動更改,問題出現在橫向模式下,主窗口啓動程序未正確設置我的窗口小部件的高度。 所以,我需要檢測屏幕方向已更改並重新調整我的appwidget大小。我GOOGLE了,但我仍然沒有任何想法,我該怎麼做。如果這是一項活動,那很簡單,但事實並非如此。如果有人對此有所瞭解,我會很感激。AppWidget屏幕取向

+0

在layout.xml設計視圖中,有一個視圖允許您在橫向中預覽佈局。 –

+0

謝謝,我知道這個功能,但我沒有問過這個問題。我問過如何在運行時更改我的appwidget的佈局大小,因爲我無法在我的config.xml文件中指定landspace和縱向大小。 –

+0

我不確定它是否是您想要的,但您可以嘗試爲您的小部件製作2個xml配置文件。 「res/xml-land」和res/xml「並定義一個不同的minSize。 –

回答

0

當屏幕方向更改時,您的AppWidgetProvider onUpdate方法被調用。如果您處於縱向或橫向模式,則可以使用以下功能來獲取遠程視圖,然後基於此更新遠程視圖。

private static boolean isPortrait (Context cx) { 
Display d = ((WindowManager) cx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 

if (d.getWidth() == d.getHeight()) { 
    return false; 
} else if (d.getWidth() < d.getHeight()) { 
    return true;  
} else { 
    return false; 
} 
} 

希望這會有所幫助。

0
  1. 在兩個值端口和值陸

    在值端口/ bools.xml定義bools.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <bool name="portrait">true</bool> 
    </resources> 
    

    在值-脊/ bools.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <bool name="portrait">false</bool> 
    </resources> 
    
  2. 通過Context.getResources()獲取布爾代碼

    private static boolean isPortrait(Context context) { 
        return context.getResources().getBoolean(R.bool.portrait); 
    }