私のAndroidアクティビティでは、SurfaceViewを拡張するカスタムビューを作成します(MonoDroidを使用しているため、構文がわずかに異なります)。
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の観点から始まりますが、これを使用して自分のビューに表示されるボタンを宣言する方法がわかりません。同様に、プログラムでButtonオブジェクトを追加できるActivityクラスとViewクラスのどちらにもメソッドが見つかりません。
概念的に何かが欠けていると思いますが、正しい方向に進むための助けを歓迎します。
私が正しく理解していれば、friendsViewは問題なく表示されますが、ボタンを追加したいですか? 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を追加してください)
SurfaceViewは子を持つことができず、ViewGroupに基づくビューのみが子を持つことができます(LinearLayout、RelativeLayout、...)ContentView()にLinearLayoutを使用するか、RelativeLayoutを使用する必要があると思います(ボタンを「内側」にする必要がある場合) 「SurfaceView)。 LinearLayoutの場合、レイアウトの方向(setOrientation())に注意する必要があります。RelativeLayoutの場合、RelativeLayout内の子の相対座標/位置を定義する子のLayoutParamsに特別な注意を払う必要があります。
すべてをXMLから膨らませるとよいでしょう。 XMLファイルで完全なクラス名を使用して、「独自の」ビューを拡張することもできます。基本的に、ContentViewを自分で作成する必要はありません。