0

Android一般的なUI形式の画面を持つアプリを開発しました。

トップダウン アプローチの形式は次のとおりです。

  1. タイトルヘッダー (2 buttons, ImageView)
  2. コンテンツ エリア - アクティビティによって異なります (ListView、タブ、ボタン、TextView、WebView などを含む)。
  3. フッター レイアウト ( Relative Layout3 つImagebuttons)

xml1 つにはタイトル ヘッダーとフッター レイアウトxmlが含まれListView、もう 1 つには使用法に基づいてタブ、ボタンが含まれるようにコードを再フォーマットしたいと考えています。これを達成できますか?サンプルコード/リンクを手伝ってください....

4

5 に答える 5

3

include 要素を使用して、サブ xml ファイルを作成できます。

<LinearLayout ... >
    <include layout="@layout/header" />
    <include layout="@layout/content" />
    <include layout="@layout/footer" />
</LinearLayout>

これにより、これらのピースを再利用するレイアウトを簡単に作成できます。

于 2012-12-07T11:07:26.330 に答える
0

タグを使用します。

      <include 
        android:id="@+id/some_id_if_needed"
        layout="@layout/some_layout"/>

また、 Merging Layouts の記事もお読みください。

于 2012-12-07T11:10:13.150 に答える
0

必要なのはincludeタグです。レイアウトを再利用できます。あなたがする必要があるのは、それらを含めることだけです:

<include
android:id="@+id/layout_id"
layout="@layout/layout_name" />
于 2012-12-07T11:10:27.613 に答える
0

include タグを使用してアクティビティ ビューに xml を追加できます。このhttp://developer.android.com/training/improving-layouts/reusing-layouts.htmlを参照してください。

たとえば、あなたの場合、

  1. main.xml で、相対レイアウトを使用します
  2. ヘッダー用に個別のxmlを追加し、タグを使用して追加してmain.xmlに追加します
  3. main.xml に相対レイアウトを追加し、高さをラップ コンテンツとして使用し、リストビューを追加します。
  4. フッター用に個別の相対レイアウト xml を追加し、タグ add を使用して main.xml に追加し、android:layout_alignParentBottom="true" を使用します。
于 2012-12-07T11:10:53.323 に答える
0

Java の継承を利用することをお勧めします。アクティビティBaseActivity間ですべての共通事項を定義し、これを拡張して、すべての子アクティビティにコンテンツを設定する場所を用意します。のレイアウトにはコンテンツ用の空のレイアウトがあり、後で子アクティビティでLayoutInflaterBaseActivityを使用してコンテンツを埋めることができます。

擬似コード:

BaseActivity extends Activity{
    View mBody;
    void onCreate(Bundle prevState){
        super.onCreate(prevState);
        setContentView(R.layout.baselayout);
        mBody = findViewById(R.id.body)
    }

    void setBody(int bodyLaout){
        //here populate the mView using LayoutInflater
    }
}

Activity1 extends BaseActivity{
    void onCreate(...){
        super.onCreate(...);
        setBody(R.layout.activity_one);
    }
}
于 2012-12-07T11:32:12.790 に答える