我正在尝试创建一个可重用的控件,我可以在任何我喜欢的地方添加已有的控件,所以我不需要属性,不需要添加任何东西。
当我将“自定义视图”拖到布局时,我只想让控件显示我的可视化编辑器。
我有一个简单的view_textseek.xml作为示例布局,我不想每次我想要“文本和搜索栏”时都重新创建它,以防我在 3 个不同的地方使用它(例如:稍后的颜色选择器)。或者只是一个同时具有“TextView”和“SeekBar”的控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/view_textseek_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:paddingLeft="15dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="@string/view_textseek_text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<RelativeLayout
android:id="@+id/view_textseek_container_seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/view_textseek_text"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="5dp" >
<SeekBar
android:id="@+id/view_textseek_seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:max="255"
android:progress="0" />
</RelativeLayout>
</RelativeLayout>
这基本上是我的课:
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.RelativeLayout;
public class TextSeekView extends RelativeLayout
{
public TextSeekView(Context context) { super(context); init(context); }
public TextSeekView(Context context, AttributeSet attrs) { super(context, attrs); init(context); }
public TextSeekView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); }
protected void init(Context context)
{
if (!isInEditMode())
{
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.view_textseek, this, true);
}
}
}
如您所见,我只想“收集”多个现有控件并使用一个“视图”或“控件”来处理这些。它不会出现在编辑器中。
或者这是由于某些旧类型的愚蠢错误,您必须重新启动环境才能正确加载“自定义”视图?
而且我不需要其他视图的特殊属性,什么都不需要,我只想在添加它或任何其他布局时能够一次又一次地显示此布局。
像 C# 一样,向控件添加 3 个文本框只是因为您每次使用 3 个文本框。然后,只要您需要 3 个文本框,就将该控件拖到表单上 - 仅此而已!