Android 以编程方式将按钮添加到视图上
如果我想在这个类中添加一个按钮,以便调用Android 以编程方式将按钮添加到视图上,android,button,Android,Button,如果我想在这个类中添加一个按钮,以便调用onclicklistener,我应该怎么做呢?我还提供了要添加此视图的活动类 活动: import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutPa
onclicklistener
,我应该怎么做呢?我还提供了要添加此视图的活动类
活动:
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.content.Context;
public class NewGame extends Activity {
View view;
Context context;
RelativeLayout layout;
GameView gameview;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
gameview=new GameView(this);
setContentView(gameview);
//layout = (RelativeLayout) findViewById(R.id.relative_layout);
//layout.addView(gameview);
}
}
视图:
公共类GameView扩展视图{
路径圆;
油漆;
油漆;
字符串z;
int i=65,strt,arc,leftx,topy,rightx,bottomy,maxx,maxy;
布尔flag1、flag2、flag3;
双n1,n2;
整数n,n3=180,n4,n5=90;
浮点数f1=180,f2=90;
按钮b1;
随机r=新随机();
椭圆形直肠
public GameView(Context context) {
super(context);
leftx = 0;
topy = 60;
rightx = 150;
bottomy = 120;
z = String.valueOf(Character.toChars(i));
cPaint = new Paint();
cPaint.setColor(Color.RED);
strt = 45;
arc = 315;
n1 = Math.random() * 600;
Log.d("random", z);
if (flag2 == false)
new DrawThread(this);
// cPaint.setStrokeWidth(2);
tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
tPaint.setColor(Color.BLACK);
float scale = getResources().getDisplayMetrics().scaledDensity;
tPaint.setTextSize(20 * scale);
}
public void onSizeChanged(int w,int h,int oldh,int oldw) {
maxx = oldw;
maxy = oldh;
}
//@Override
protected void onDraw(Canvas canvas) {
// Drawing commands go here
oval = new RectF(leftx,topy,rightx,bottomy);
canvas.drawArc(oval, strt, arc, true, cPaint);
while (i < 90) {
canvas.drawText(String.valueOf(Character.toChars(i)),f1,f2, tPaint);
break;
}
}
}
公共游戏视图(上下文){
超级(上下文);
leftx=0;
topy=60;
右x=150;
底部=120;
z=字符串.valueOf(Character.toChars(i));
cPaint=新油漆();
cPaint.setColor(Color.RED);
strt=45;
弧=315;
n1=数学随机数()*600;
对数d(“随机”,z);
如果(flag2==false)
新拉丝(本);
//cPaint.设定行程宽度(2);
t油漆=新油漆(油漆.防油漆标记);
t绘制设置样式(绘制、样式、填充和笔划);
t打印设置颜色(颜色为黑色);
浮动比例=getResources().getDisplayMetrics().scaledDensity;
t点setTextSize(20*比例);
}
已更改尺寸上的公共空白(整数w、整数h、整数oldh、整数oldw){
maxx=oldw;
maxy=oldh;
}
//@凌驾
受保护的void onDraw(画布){
//绘图命令位于此处
椭圆=新的矩形(左X、右Y、右X、底部);
画布。绘制弧(椭圆形、strt、弧形、真、彩色);
而(i<90){
canvas.drawText(String.valueOf(Character.toChars(i)),f1,f2,tPaint);
打破
}
}
}
您可以这样做:
Button bt = new Button(this);
bt.setText("A Button");
bt.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
linerLayout.addView(bt);
然后你就可以这样做了
bt.setOnClickListener(new View.OnClickListener() {
//TO DO
}
我希望这能对您有所帮助。首先,为了允许自定义视图具有addView(view v)方法,它必须扩展ViewGroup而不是view;然后你可以使用这个代码
b1=new Button(context);
b1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT ));
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
this.addView(b1);
在完成上述操作后,我现在得到一个空白屏幕。您认为会出现什么问题?尝试为按钮b1设置id。setId(1234)仍然得到一个空白屏幕尝试使用b1.setText(“您的文本”)添加文本,并使用LayoutParams.FILL\u父级而不是LayoutParams.WRAP\u内容。如果不在自定义视图中输入按钮的代码,该怎么办?如何将自定义视图添加到布局中?先生,我还提供了上面的活动类。