TextViewにイベントを追加した例
package test.example.com.test45;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//相対的レイアウト(RelativeLayout)を使用する宣言
import android.view.View;
import android.widget.RelativeLayout;
//TextViewを使用する宣言
import android.widget.TextView;
//クリックイベント用に追加
import android.view.View.OnClickListener;
//ボタンを宣言
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements OnClickListener {
//setId用の管理番号
private int mNo1;
private int mNo2;
private int mNo3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
//配置を設定
x=100;
y=50;
width=300;
height=60;
RelativeLayout.LayoutParams obj1 = null;
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
//ボタンの設置
Button btn1=new Button(this);
mNo1 = View.generateViewId();
btn1.setId(mNo1);
btn1.setOnClickListener(this);
btn1.setText("文字を変更");
layout.addView(btn1,obj1);
btn1=null;
y+=height+10;
//TextViewを設置
height=50;
width=300;
obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
TextView textView = new TextView(this);
mNo2 = View.generateViewId();
textView.setId(mNo2);
//「setClickable」をtrueにしなくても動作しました
//textView.setClickable(true);
textView.setOnClickListener(this);
textView.setText("テキストの文字を変更");
textView.setBackgroundColor(Color.argb(100,50,120,70));
layout.addView(textView,obj1);
y+=height+50;
height=50;
width=300;
obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
TextView textView2 = new TextView(this);
mNo3 = View.generateViewId();
textView2.setId(mNo3);
textView2.setText("");
textView2.setBackgroundColor(Color.YELLOW);
layout.addView(textView2,obj1);
}
@Override
//ボタンがクリックされたら実行されます。
public void onClick(View view) {
int iViewId = 0;
int flg = 0;
iViewId= view.getId();
String sData = "";
if(mNo1==iViewId)
{
flg=1;
sData="ボタンをクリックした";
}
else if(mNo2==iViewId)
{
flg=1;
sData="テキストをクリックした";
}
if(flg > 0)
{
TextView textView = (TextView)findViewById(mNo3);
textView.setText(sData);
textView=null;
}
}
//レイアウトを決定するオブジェクトを生成し渡します
private RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
「setClickable」をtrueにすることでクリックイベントが使えるようになると他のサイトであったのですが、
使用しなくても動作してしまいました。
イベントは「setOnClickListener(this)」を使いました。
実行結果
左側がボタンをタップした例で、右側がテキスト(TextView)をタップした例です。
|
|