を拡張するカスタム ビューを作成しましたRelativeLayout
。デザイナーでどのように表示されるかをプレビューしたいと思います。
Javaは次のようなものです:
// The view for a snap in the search/browse fragment.
public class MyView extends RelativeLayout
{
public MyView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
LayoutInflater inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.the_layout, this);
}
public void setData(String text)
{
mText.setText(text);
}
// *** Views ***
private TextView mText;
@Override
protected void onFinishInflate()
{
super.onFinishInflate();
mText = (TextView)findViewById(R.id.text);
}
}
XML は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- (And lots more views) -->
</RelativeLayout>
ただし、これにはいくつかの問題があります。
- これは実際には無意味な
RelativeLayout
内にを作成します。RelativeLayout
XML<RelativeLayout>
を に変更することで解決できます<merge>
が、レイアウトをまったくプレビューできません! - Java で関数 (またはそれが呼び出されたもの)を使用して
isInEditor()
、プレビュー用のサンプル データを追加したいのですが、XML エディターに、クラスの代わりにクラスのプレビューを表示するように指示する方法が見つかりません。実際の XML。
私が考えることができる1つの不満な解決策は、その中preview.xml
にのみ空のファイルを作成する<com.foo.bar.MyView/>
ことです...しかし、それはちょっとばかげているようです。より良い方法はありますか?(プレビューほど編集についてはあまり気にしません。というのは、正直に言うと、Eclipse/ADT は遅すぎて不安定なので、グラフィカル レイアウトの編集を使用可能にすることはできません。)