16

それは私かもしれませんが、Androidページで指定された式に従ってアプリウィジェットの最小サイズを計算すると、正しいウィジェット幅が得られません。式は次のとおりです。

幅(n) = (70 xn) - 30

5x1 ウィジェットが必要な場合、正しい幅は (5 * 70) - 30 = 320 dp になります。ただし、motorola Xoom でこれをテストすると、4x1 ウィジェットであることがわかります。私はさまざまな値をテストしましたが、Motorola xoom と Honeycomb の 5x1 には 400dp が適しているようですが、Gingerbread を使用した通常の Galaxy Tab でテストすると、6x1 に解決されます (予想どおり)。

ここで 2 つの質問があります。

  • 私が見落としているジンジャーブレッドとハニカムの違いは何ですか?
  • ICS ウィジェットのサイズにウィジェット間のパディングがなくなったことを知っているので、ここにもいくつかの経験則がありますか?
4

4 に答える 4

24

私の4x1 widgetでは、 res/values/dimens.xmlにこれらの寸法を使用しました:

<!-- size = (74 x n) - 2 -->
<dimen name="appwidget_margin">0dp</dimen>
<dimen name="appwidget_min_width">294dp</dimen>
<dimen name="appwidget_min_height">72dp</dimen>

res/values-v14/dimens.xml の場合:

<!-- size = (70 x n) - 30 -->
<dimen name="appwidget_margin">0dp</dimen>
<dimen name="appwidget_min_width">250dp</dimen>
<dimen name="appwidget_min_height">40dp</dimen>

背景画像にはウィジェット テンプレート パックを使用しました。

公式ガイドではres/values/dimens.xml のデフォルトの余白は 8dp である必要があると書かれていますが、8dp を使用すると、私のウィジェットはデスクトップの標準的なウィジェット (Google 検索、天気など) よりも小さくなります。これは、v1-v13 のマージンが背景画像に組み込まれているためです。

ここに画像の説明を入力

HTC Desire、Nexus S、エミュレータ Android 2.2、エミュレータ Android 2.3.3 でテストしました。上記のテンプレート パックの背景と構成を使用すると、ウィジェットのサイズは他の標準ウィジェットと同じになり、テストしたすべてのデバイスで適切に表示されます。

さまざまなランチャーにも問題があります。この記事を読むことをお勧めします: http://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/

于 2012-06-18T16:23:04.577 に答える
10

あまりにも多くのデバイスが、Google のアドバイスに従っているわけではありません。さまざまな画面と OS に対応するより正確な minWidth と minHeight を指定できるいくつかの xml-xxx フォルダーを使用することをお勧めします。

現在、私はOSのみに基づいて4つ:

xml       // standard
xml-v11   // Honeycomb grid
xml-v14    // ICS's new extra padding
xml-sw552dp-v14  // ICS tablet padding

ただし、微調整を行うと、特定の dpi または画面用にいくつかの新しいフォルダーを追加する必要がある場合があります。

クイックアップデート:

一部のデバイスのみが自動パディングを使用します。Samsung と HTC には全幅ウィジェットを使用するカスタム UI があるため、ランチャーの OS パディングをオーバーライドします。

于 2012-04-12T02:46:31.350 に答える
4

ICS にはパディングはなく、自動パディングがあります。そして、あなたが使った式は ICS のものです。古いバージョンの場合、別の式があります。

num*74 - 2
于 2012-04-04T12:29:08.493 に答える
1

注: pre-Honeycomb をターゲットにする (または、ハニカムの前に minSdkVersion を指定するときに targetSdkVersion を指定しない) 場合、ハニカム グリッド (および ICS グリッド) の計算は有効になりません。これの欠点は、新しい OS 機能を見逃していることですが、実際にそれらを必要としない場合は、ターゲットを事前にハニカム状態にしておくことで、カスタマイズされた xml フォルダーの手間を省くことができます。

于 2012-08-21T12:27:11.723 に答える