我有一个类SomeView,它扩展了View并且在一个类中显示扩展了线性布局的控件。onClickListener在Activity上设置
线性布局在创建活动时实例化。 我想在每次点击这个视图SomeView时在活动中调用一个方法。 我试图设置onClickListener在活动这样
public class MainActivity extends AppCompatActivity implements
SomeView.OnClickListener {
private Controls menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
menu = new Controls(this);
menu.getSomeView().setOnClickListener(this);
setContentView(menu);
}
@Override
public void onClick(View view) {
System.out.println("Hello");
}
}
控件类看起来像这样
public class Controls extends LinearLayout {
private SomeView aview;
public Controls(Context context) {
super(context);
this.setOrientation(LinearLayout.HORIZONTAL);
aview = new SomeView(context);
this.addView(aview, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
public SomeView getSomeView() {
return aview;
}
}
和SomeView类看起来是这样的(它只是绘制一个椭圆形)
public class SomeView extends View {
public SomeView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF aRect = new RectF();
aRect.left = getPaddingLeft();
aRect.top = getPaddingTop();
aRect.right = getWidth() - getPaddingRight();
aRect.bottom = getHeight() - getPaddingBottom();
Paint aPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
aPaint.setColor(Color.GREEN);
canvas.drawOval(aRect, aPaint);
}
}
但我错过了一些东西,因为点击没有调用onClick方法。 我还需要设置什么?
您能向我们展示您的Controls类代码吗? – xFighter
您从未将控件添加到活动的内容视图? –
@AbdulAhad我将它添加到问题中。 – JennyToy