0

これが私の質問です。縦向きの画面の向きで完全に機能するアプリウィジェットがあります。ただし、画面の向きを横向きに変更すると、ホーム画面ランチャーによってappWidgetの幅と高さが自動的に変更され、横向きモードでは、ウィジェットの高さがホーム画面ランチャーによって正しく設定されません。そのため、画面の向きが変更されたことを検出し、アプリウィジェットのサイズを変更する必要があります。私はそれをグーグルで検索しましたが、それでもどうすればそれができるのかわかりません。それが活動だったとしたら、それは単純でしたが、そうではありません。誰かがこれについて考えているならば、私は感謝するでしょう。

4

2 に答える 2

0

画面の向きが変わると、AppWidgetProvideronUpdateメソッドが呼び出されます。次の関数を使用して、ポートレートモードかランドスケープモードかを取得し、それに基づいてリモートビューを更新できます。

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;
}
}

お役に立てれば。

于 2013-01-09T19:31:04.853 に答える
0
  1. values-portとvalues-landの両方でbools.xmlを定義します

    値内-port/bools.xml

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

    値内-land/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);
    }
    
于 2016-05-04T03:14:47.783 に答える