Android自定义视图上的onClick方法无法工作

34

我开始开发一个应用程序,昨天我创建了菜单但是onClick方法不起作用!我创建了一个类继承View并将其命名为MainMenuObject - 该类是主菜单中任何对象(按钮、标志等)的通用类。我为它们创建了一个特殊的类,因为当菜单启动时我正在执行动画。建立MainMenuObject类之后,我又建立了另一个类(OpeningTimesView),它继承了View并将主菜单中所有按钮放在其中,并且将作为主Activity的布局。

一切都很好,动画效果非常好,我想在我的按钮上添加监听器,所以我向OpeningTimesView类添加了一个onClickListener的实现,并重写了onClick方法。然后我使用setOnClickListener(this)和setClickable(true)将监听器添加到按钮上,但它不起作用!我尝试了所有方法!请帮助我找出问题出在哪里。我在onClick方法中添加了一个Toast,它不依赖于任何“if”语句,但是它也不显示。

(顺便问一下,有没有办法将屏幕宽度和高度定义为变量,以便所有类都可以访问?它不能是静态的,因为您从一个display对象获取高度和宽度,但必须还有其他方法)

以下是代码:

public class OpeningTimesView extends View implements OnClickListener{
    private MainMenuObjectView searchButton;
    private MainMenuObjectView supportButton;
    private MainMenuObjectView aboutButton;
    private int screenWidth;
    private int screenHeight;
    public OpeningTimesView(Context context, Display dis) {
        super(context);

        this.screenWidth = dis.getWidth();
        this.screenHeight = dis.getHeight();

        searchButton = new MainMenuObjectView(context, 200, MovingMode.RIGHT, R.drawable.search, dis);
        supportButton = new MainMenuObjectView(context, 400, MovingMode.LEFT, R.drawable.support, dis);
        aboutButton = new MainMenuObjectView(context, 600, MovingMode.RIGHT, R.drawable.about, dis);

        searchButton.setClickable(true);
        supportButton.setClickable(true);
        aboutButton.setClickable(true);

        searchButton.setOnClickListener(this);
        supportButton.setOnClickListener(this);
        aboutButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View view){
        Toast.makeText(getContext(), "Search button pressed", Toast.LENGTH_SHORT).show();
        if(view == searchButton){
            Toast.makeText(getContext(), "Search button pressed", Toast.LENGTH_SHORT).show();
        }
        else if(view == supportButton){
            Toast.makeText(getContext(), "Support button pressed", Toast.LENGTH_SHORT).show();
        }
        else Toast.makeText(getContext(), "About button pressed", Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onDraw(Canvas canvas)
    {
        // Drawing the buttons
        this.searchButton.onDraw(canvas);
        this.aboutButton.onDraw(canvas);
        this.supportButton.onDraw(canvas);
    }

提前感谢,Elad!


请查看此链接,我已经想出了一个解决方案。http://stackoverflow.com/questions/2826576/android-custom-view-onclickevent-with-x-y-locations/20653558#20653558 - Manjunath
11个回答

0

只需在您的onTouchEvent()方法中添加callOnClick()即可

public boolean onTouchEvent(MotionEvent event) {
        .....YOURCODE.....
        callOnClick();
        return boolean;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接