gpt4 book ai didi

android - mLayout.addView() 只工作一次

转载 作者:行者123 更新时间:2023-11-30 01:20:10 25 4
gpt4 key购买 nike

我最近开始为 android 开发,但在尝试向布局添加多个 View 时遇到了困难。它实际上适用于第一次触摸,但之后它什么都不做。日志虽然继续工作并显示已检测到触摸并显示事件的位置。我有以下代码

public class MainActivity extends Activity {
private LinearLayout mLayout;
private Context con = this;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLayout = (LinearLayout) findViewById(R.id.lLayout);
mLayout.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
mLayout.addView(createNewView(event.getX(), event.getY()));
Log.d("this ","View has been add." + event.getX()+ ", " + event.getY());
break;
}
return false;
}
});
}

private markerView createNewView(float x, float y) {
final LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final markerView mView = new markerView(con, 150, x, y);
mView.setLayoutParams(lparams);
return mView;
}}

和 公共(public)类 markerView extends View implements View.OnTouchListener{

private Paint paint = new Paint();
private int diameter;
private float X,Y;

public markerView(Context context, int dia, float dx, float dy) {
super(context);
diameter = dia;
X = dx; Y = dy;
paint.setColor(Color.GREEN);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth((float) 4.0);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.drawCircle(X, Y, diameter, paint);
canvas.restore();
}

@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}}

最佳答案

尝试删除 final markerView 上的 final 标签 mView = new markerView(con, 150, x, y);

关于android - mLayout.addView() 只工作一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37243012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com