2011-01-23 17 views
5

を表示するボタンを追加するには、私は(構文でMonoDroidので、わずかな変化を使用して)SurfaceViewを拡張するカスタムビューの作成:私のActivityクラスでアンドロイド:どのようにプログラム的に私のAndroidの活動で

class FriendsView : SurfaceView 
{ 
    ... 

    public FriendsView(Context context) : base(context) 
    { 

     ... create my custom view ... 

    } 


} 

を、私はセットビューへのコンテンツビュー:

protected override void OnCreate(Bundle bundle) 
{ 

    base.OnCreate(bundle); 

    ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent); 

    FriendsView friendsView = new FriendsView(this); 

    SetContentView(friendsView, layoutParams); 

} 

ビューにボタンを追加したいのですが、これを行う方法はありません。私が読んだことはすべてmain.xmlの観点から始まりますが、これを使って私の見えているボタンを宣言する方法はわかりません。同様に、ActivityクラスまたはViewクラスのいずれかでメソッドを見つけることができないため、プログラムでButtonオブジェクトを追加できます。

私は概念的に何か不足していると感じますが、正しい方向に向かうための助けを歓迎します。

+0

申し訳ありません、あなたはそのようなプロトタイプでコンストラクタ 'ViewGroup.LayoutParams'をどこに持ってきましたか? – Dims

+0

あなたの答えを見つけることができます[ここ](http://stackoverflow.com/a/7679516/828728)。 – yugidroid

答えて

10

私が正しく理解していれば、あなたの友人はうまく表示されていますが、ボタンを追加したいのですか? あなたのFriendsViewの表示の種類はわかりませんが、linearLayoutや何かのように子供を追加することができると仮定した場合、これを行うことができます(頭の上から)

//assuming you have a friendsView object that is some sort of Layout. 
Button yourButton = new ImageButton(this); 
//do stuff like add text and listeners. 

friendsView.addView(yourButton); 

あなたがに子を追加したいfriendsViewで他のいくつかの要素がある場合は、あなただけのfindViewById()を使用してそれを見つけることができますが(あなたがこのようにそれらを検索したい場合は、あなたの要素にIDを追加)

+0

こんにちは、Nanne - はい、そうです。私のビューは正常に動作していますが、ボタンを追加する機能をいくつか追加したいと思います。 – user304582

+0

だから私は、addView関数をお勧めします:) – Nanne

+1

私はあなたの提案を試みたが、私のカスタムビュー(それはSurfaceViewを拡張する)のaddViewメソッドを持っていない。 SurfaceViewsはボタンをサポートしていませんか? – user304582

4

A SurfaceViewすることができます(LinearLayout、RelativeLayout、...) あなたのContentView()の代わりにLinearLayoutを使うか、RelativeLayout(if e ButtonはSurfaceViewの「内側」にある必要があります)。 LinearLayoutでは、レイアウトの向き(setOrientation())を考慮する必要があります.RetativeLayoutの場合、RelativeLayout内の子の相対座標/位置を定義する子のLayoutParamsについて特に注意する必要があります。

XMLからすべてを膨らませるのがベストでしょう。また、XMLファイルの完全なクラス名を使用して、独自のビューを展開することもできます。基本的にContentViewを自分で作成する必要はありません。

関連する問題