メインアクティビティのonCreate()メソッド内で設定しているカスタムビューを作成しました。
このような:
compassView = new CompassView(this);
setContentView(compassView);
私の質問はです。xmlでビューを参照して、他のコントロールと一緒にlinearlayout内に配置するにはどうすればよいですか?
CompassView
あなたがと呼ばれるパッケージに配置されているクラスであると仮定すると、
com.android.sample
このようなXMLを作成します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.android.sample.CompassView
android:id="@+id/compassview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
そして今、いつものようにsetContentView(R.layout.xmlname);
、あなたのonCreate()
。
とcompassView = (CompassView)findViewbyId(R.id.compassview);
setContentView( "ここにxmlレイアウトを配置")
.xmlレイアウトでは、単純にurViewを追加します。
<com.example.widget.CompassView
android:id="@+id/..."
style="@style/..." >
</com.example.widget.CompassView>
カスタムビューをxmlファイルに追加する必要があります。次のようになります。
<yourpackagename.yourCustomViewClass
android:id="@+id/myCustomView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
この後、他のビューの場合と同様に、IDを介してこのビューにアクセスできます。
まず、スーパークラスのコンストラクターをオーバーライドする必要があります。そうしないと、実行時エラーが発生し、アクティビティが開かれることはありません。次に、次のような完全修飾クラス名を使用する必要があります。
<your_package_name.your_class_name
android:id="@+id/mycompass"
your attributes here
...
/>