Androidカスタムコントロールにイベントを追加
3928 ワード
1)記事の概要
カスタムコントロールを作成し、カスタムイベントを追加
ユーザーがカスタムコントロールの「テスト」ボタンをクリックすると、ボタンカスタムイベントがトリガーされます.
2)カスタムコントロールのレイアウトコードとしてlayout(activity_custom.xml)を定義します.
カスタムコントロールを作成し、カスタムイベントを追加
ユーザーがカスタムコントロールの「テスト」ボタンをクリックすると、ボタンカスタムイベントがトリガーされます.
2)カスタムコントロールのレイアウトコードとしてlayout(activity_custom.xml)を定義します.
3)接下来写一个类(CustomUserControl.java)继承LinearLayout,导入刚刚的布局,添加自定义事件并通过单击“测试按钮”触发自定义事件
package com.example.androidtest2;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class CustomUserControl extends LinearLayout{
/* */
public interface IMyClick{
public void onMyClick(String str);
}
/* */
IMyClick iMyClick=null;
/* */
public void setOnMyClickListener(IMyClick _iMyClick){
iMyClick=_iMyClick;
}
private Button button1=null;
private EditText editText1=null;
public CustomUserControl(Context context){
super(context);
}
public CustomUserControl(Context context, AttributeSet attr){
super(context, attr);
LayoutInflater layoutInflater=
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.activity_custom, this);
editText1=(EditText)findViewById(R.id.editText1);
/* */
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
/* editText1 */
iMyClick.onMyClick(editText1.getText().toString());
}
});
}
/* Button */
public void setButtonText(String text){
button1.setText(text);
}
}
)フロント(activity_main.xml)は、カスタムコントロールコードを次のように呼び出します.
)バックグラウンド(MainActivity.java)は、カスタムイベントコードを次のようにトリガする.package com.example.androidtest2;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private CustomUserControl customUserControl1=null;
private TextView textView1=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1=(TextView)findViewById(R.id.textView1);
customUserControl1=(CustomUserControl)findViewById(R.id.customUserControl1);
customUserControl1.setButtonText(" ");
customUserControl1.setOnMyClickListener(new CustomUserControl.IMyClick() {
@Override
public void onMyClick(String str) {
textView1.setText(str);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}