Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式将按钮添加到视图上_Android_Button - Fatal编程技术网

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内容。如果不在自定义视图中输入按钮的代码,该怎么办?如何将自定义视图添加到布局中?先生,我还提供了上面的活动类。