2012-03-05 7 views
0

私はAndroid 2.1アプリを開発しています。初心者:2つの部分で構成されるコンテンツビューを設定

私はLinearLayoutクラス定義されています:次に

public class MyTopBar extends LinearLayout { 
    ... 
} 

を、私はレイアウトxmlファイル(content.xml)持っている:私はRootActivity.javaを持って

<LinearLayout> 
    ... 
</LienarLayout> 

を、私はMyTopBarを設定したいと思いますこのRootActivityの内容として

それから私はRootActivityを拡張MyActivityを持っている:

public class MyActivity extends RootActivity{ 
     //set xml layout as content here  
} 

私はMyActivityの内容としてcontent.xmlを設定したいと思います。

全体として、上記の方法でMyTopBarの上に配置されるべきレイアウトを達成したいと思います。画面は常にです。 RootActivityを拡張するその他のアクティビティは、その内容がMyTopBar以下になります。これを達成する方法は?

答えて

1

1あなたが直接このようなMyActivityクラスのXMLレイアウトにカスタムLinearLayoutを追加することができます。

<LinearLayout> 
    <com.full.package.MyTopBar 
     attributes here like on any other xml views 
    /> 
    ... 
</LinearLayout> 

またはカスタムビューとレイアウトが含まれるようにincludeタグを使用することができます。

<LinearLayout> 
    <include layout="@layout/xml_file_containing_mytopbar" 
    /> 
    ... 
</LinearLayout> 

2用途:

setContentView(R.layout.other_content); 
+0

こんにちは、私は私のポストを更新しました。基本的には、MyTopBarをXMLレイアウトから分離して、RootActivityでMyTopBarを開始するだけです。ルートアクティビティを拡張するその他のアクティビティは、XMLコンテンツ全体を設定します。MyTopBarを他のxmlとともに画面上部に表示したいレイアウトはその下に表示されます... –

+0

@ Leem.fin私はあなたがしようとしていることを知っています。あなたのベスト・ベットは、 'include'タグを使い、独自のカスタム・ビューだけを含むxmlレイアウトを単純にインクルードすることです。 'RootActivity'に' contentView'を設定することはできません。これはサブクラスで置き換えられるからです。 – Luksprog

+0

@ Leem.finここからgoogleのリンクですhttp://developer.android.com/resources/articles/layout-tricks-reuse.html – Luksprog

0

TopBarのレイアウトが空いていて、その中にトップバーを追加するlayout.addView(topbarObject); 2番目の質問に関して、setContentViewは私が知る限り一度だけ呼び出すことができます。しかし、あなたはそれらの2つのxmlファイルをView.inflate(other_content.xml)で膨らませて、必要に応じて親のXMLレイアウトに追加することができます。親レイアウトの場合はremoveView()、新しいレイアウトファイルの場合はaddView()となります。

編集: 両方の質問の解決方法として、たとえば親レイアウトを持つことができます。次のように:

//Omitting the obvious tags 
//parent.xml 
<RelativeLayout 
    android:id="@+id/parentLayout"> 
    <RelativeLayout 
     android:id="@+id/topLayout"> 
    </RelativeLayout> 
    <RelativeLayout 
     android:id="@+id/contentLayout"> 
    </RelativeLayout> 
</RelativeLayout> 

は今、あなたのコードでは、あなたのTopBarレイアウトのオブジェクトを作成し、topLayoutに追加コンテンツビューとして親のレイアウトを設定します。

setContentView(R.layout.parent); 
MyTopBar topBar=new MyTopBar(this); 
RelativeLayout toplayout=(RelativeLayout)findViewByid(R.id.topLayout); 
topLayout.addView(topBar); //or you can directly add it to the parentLayout, but it won't work for the first question. So better stick to it. 

ここで、必要なxmlレイアウトを拡張します。 contentLayoutに追加します。

RelativeLayout layout=(RelativeLayout)View.inflate(R.layout.content,null); 
contentLayout.addView(layout);//Assuming you've done the findViewById on this. 

他のコンテンツを表示する必要がある場合は、次のコードを呼び出してください。

contentLayout.removeAllView(); 
RelativeLayout layout2=(RelativeLayout)View.inflate(R.layout.other_content,null); 
contentLayout.addView(layout2); 
+0

こんにちは、良い解決策を聞いて、より具体的にコードでお願いしますか?ありがとうございました。 (少なくとも最初のもの、うまくいけば私の第2の質問のための答え) –

+0

私は私の答えをフルコードにするように更新しましたが、私の怠惰のために私はそれにいくつかの明白なものを省いた。私はあなたがそれらを埋めることができれば幸いです。 – noob