我已经基于LinearLayout创建了一个自定义ViewGroup。
ClearableEditText.java
package test.todolist;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class ClearableEditText extends LinearLayout{
private EditText editText;
private Button button;
public ClearableEditText (Context context){
super (context);
String service = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater li = (LayoutInflater)getContext ().getSystemService (service);
li.inflate (R.layout.clearable_edit_text, this, true);
editText = (EditText)findViewById (R.id.clearEditText);
button = (Button)findViewById (R.id.clearButton);
configButton ();
}
private void configButton (){
button.setOnClickListener (new Button.OnClickListener (){
public void onClick (View v){
editText.setText ("");
}
});
}
}
clearable_edit_text.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/clearEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/clearButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/clear"
/>
</LinearLayout>
我现在如何使用ClearableEditText?
我试图以两种方式在布局(main.xml)中放置一个节点:
<test.todolist.ClearableEditText/>
和
<test.todolist.clearable_edit_text/>
但他们都没有工作。
我的 main.xml :
<?xml version="1.0" encoding="utf-8"?>
<test.todolist.ClearableEditText/>
我的 ToDoList.java (主要活动):
package test.todolist;
import android.app.Activity;
import android.os.Bundle;
public class ToDoList extends Activity{
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
}
}
感谢。
答案 0 :(得分:4)
解决。 main.xml应该是:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<test.todolist.ClearableEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</merge>
首先是merge
代码,因为在使用自定义视图时需要它。我的自定义视图有一个LinearLayout
根,因此如果我在main.xml中设置另一个LinearLayout或FrameLayout根来使用我的自定义视图效率很低。 merge
解决了这个问题。
其次,所有观看次数必须包含layout_width
和layout_height
属性。