2

利用可能な大きなレイアウトがある場合、タブレットに通常のレイアウトを使用させることは何らかの方法で可能ですか?

たとえば、次のようになります。

if(!user.payedForTabletApp) DO_NOT_USE_LARGE_LAYOUT();
4

2 に答える 2

2

問題にアプローチする方法は次のとおりです。

1) 2 つのレイアウトを作成:res/layout/phone.xmlおよびres/layout/tablet.xml
2)レイアウト エイリアスを作成:
2.1) res/layout/main.xml -> res/layout/phone.xml
2.2) res/layout-large/main.xml -> res/layout/tablet.xml
2.3) res/layout-sw600dp/main.xml ->res/layout/tablet.xml

エイリアスとは、次のような意味です。

<resources>
    <item name="main" type="layout">@layout/phone</item>
</resources>

レイアウト エイリアスのその他の例については、このチュートリアルを参照してください。

3)onCreate()アクティビティ内の関数またはonCreateView()フラグメント内の関数を更新して、適切なレイアウトを使用します。

アクティビティの例を次に示します。

int layoutResId = R.layout.main;
if (!user.payedForTabletApp) {
    layoutResId = R.layout.phone;
}
setContentView(layoutResId);
于 2012-08-23T10:42:20.023 に答える
1

これに対する簡単な答えはノーです。Android がリソース システムを処理します。

ただし、レイアウトフォルダーに2つの異なるレイアウトファイルを提供することはできます.

明らかactivity_home_normal.xmlに私activity_home_large.xmlこれをお勧めしません

次に、次のことができます。

if(!user.payedForTabletApp){
    setContentView(R.layout.activity_home_normal);
}else{
    setContentView(R.layout.activity_home_large);
}

しかし、レイアウトではなく他の機能の使用を課金することを検討します。iOS でアプリを購入した場合、同じアプリが両方のデバイス サイズで動作することを期待します。Android でも同じです。

レイアウトはユーザー エクスペリエンスを最適化します。

于 2012-08-23T10:41:13.673 に答える