web-dev-qa-db-ja.com

Android携帯電話とタブレット用に異なるレイアウトを作成する

これは基本的なAndroidの質問です。携帯電話とタブレットで異なる画面デザインが必要なアプリがあります。携帯電話にはListViewが必要で、タブレットにはアイテムのGridViewが必要です。

2つの異なるアプリを作成せずにこれを行う方法を知りたいです。

ありがとう

23
user3713706

基本的に、Android携帯電話とタブレットの両方に異なるレイアウトを作成する必要があります。Androidは区別するのに十分スマートです。たとえば、大画面の場合は、 folder-namer Layout-large。にタブレットxmlを配置します。Androidはここからxmlを選択し、電話の場合は単純なレイアウトフォルダーから選択します。サイズ固有のリソースは、small、normal、large、およびxlargeです。たとえば、特大画面のレイアウトは、layout-xlarge /に配置する必要があります。

携帯電話とタブレットの両方の画面でまったく異なる場合は、2つの異なるAPKを作成して、Google Playで同じIDに読み込むことができます。これにより、アプリケーションは軽量で高速になります。 Google Playは、アプリケーションがタブレットまたは電話用であることを自動的に検出できます。心配する必要はありません。

21
vyas

基本的に、修飾子ごとに異なるレイアウトファイルを提供する必要があります。

非常に簡単な例として、xmlレイアウトファイルはlayout-sw720dp(またはAPIレベル<13の場合はlayout-large)フォルダーに配置され、720ディップ幅(10インチタブレット)以上のデバイスに使用されます。

Androidドキュメントの 複数画面のサポート および リソースの提供 を確認してください。

8
matiash

これをチェックしてください: http://developer.Android.com/guide/practices/screens_support.html

2つの個別のアプリを作成する必要はありません。

6
Shivam Verma

これは、Recyclerビューの「app:layoutManager」属性を同じように変更するために行ったことです。リストとグリッドビューを使用しているので、リサイクラビューを使用することが、スムーズにスクロールするための最良の方法のようです。

  1. Res "layout-sw600dp"にフォルダーを作成します。
  2. レイアウトファイルをこのフォルダーにコピーします。
  3. レイアウトフォルダーにある元のレイアウトファイルで、レイアウトマネージャー属性としてリニアレイアウトマネージャーを設定します。

    <Android.support.v7.widget.RecyclerView app:layoutManager="Android.support.v7.widget.LinearLayoutManager"/>

  4. 「layout-sw600dp」フォルダーレイアウトファイルで、GridLayoutManagerをリサイクルビュー属性として設定します。

    <Android.support.v7.widget.RecyclerView app:layoutManager="Android.support.v7.widget.GridLayoutManager"/>

スパンカウントを変更することを忘れないでください。デフォルトは、ライナーレイアウトの出力と同じ0になります。

リソース:

  1. XMLからRecyclerView app:layoutManager = ""を設定する方法?

  2. https://medium.com/google-developers/building-a-responsive-ui-in-Android-7dc7e4efcbb

  3. https://developer.Android.com/training/multiscreen/screensizes.html

0
SandaruMK