2017-08-29 23 views
0

私は携帯電話のアンドロイドアプリケーションが動作しています。今はタブレット用のバージョンを開発したいと思います。私が行った研究によると、私はそのために1つのプロジェクトだけを保つことができます。私は、複数のレイアウトとドロワーブルで異なる画面サイズを扱う必要があります。タブレットと携帯電話レイアウトのアクティビティ

私のホームページ(各デバイスに1つ)に2つのレイアウトがある場合は、2つのアクティビティを開発する必要はありますか?あるいは、どのレイアウトがロードされているかを検出し、if/elseブランチで自分のものを実行できるアクティビティを1つだけ持つことはできますか?

私のレイアウトは非常に異なります。たとえば、タブレット版の場合、私はDrawerLayoutを使用してサイドバーを作成していますが、電話版はありません。

+0

あなたは、画面のサポートにつき1つの活動を展開する必要はありません。 (タブレット/電話)の場合、Android Operative Systemはデバイスの解像度に合ったXMLを自動的に選択しますが、ビューバインディングで注意する必要があります。つまり、同じビューのビュータイプを尊重する必要があります両方のレイアウトのID名。 –

答えて

1

たとえば、ホームページ(各デバイスに1つ)のレイアウトが2つある場合、2つのアクティビティを作成する必要がありますか?

いいえ、あなたのレイアウトの2つの異なるバージョン(layout/layout-sw600dp/内の別で、おそらく1)を持っている場合、システムは自動的にあなたのために正しいものを選択します。

または、どのレイアウトが読み込まれているかを検出して、if/elseブランチで自分のものを実行できるアクティビティを1つだけ持つことはできますか?

これは通常行われていることですが、どこでもif/elseを行う必要はほとんどありません。

あなたのタブレットレイアウトはDrawerLayoutを使用しており、携帯電話のレイアウトは使用しないことに言及しています。システムは、タブレットのレイアウトを選択した、システムがお使いの携帯電話のレイアウトを選択した場合、それはnullを返しますとき

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer); 

if (drawer != null) { 
    // set up drawer for tablets 
} 

findViewById()呼び出しが正常にDrawerLayoutを返します。それはあなたがこのようなコードを書くことができますを意味します。あなたは両方お使いの携帯電話やタブレットのレイアウトに存在している知っているビューがあるかどう

しかし、あなたはちょうどそれを直接使用することができます。

TextView textView = (TextView) findViewById(R.id.text); 
textView.setText("hello world"); 
関連する問題