Android OnLongClickListener问题

时间:2010-12-23 11:30:13

标签: android onlongclicklistener

我有一个自定义视图,DisView(上下文,位图),我想添加一个LongCLickListener。

点击其他内容后会显示该视图。

public void onClick(View view) {
    ...
    RelativeLayout toplayout = new RelativeLayout(this);
    setContentView(toplayout);

    Bitmap bmp2 = BitmapFactory.decodeResource(getResources(), R.drawable.tag3);

    tag3 = new DisView(this,bmp2);
    tag3.setOnLongClickListener(this);

我应该补充说,最初活动的contentview设置为linearlayout,但是在点击的按钮上,setContentLayout()会使relativelayout成为新的布局。

接下来我做了onLongClick方法(活动的一个方法,实现了onlongclicklistener):

@Override
public boolean onLongClick(View view) {

    moveTag(view);
    return true;
}

moveTag()是一个非常简单的TranslateAnimation。我不知道为什么它不起作用。我有一种感觉,可能是因为我改变了布局。

3 个答案:

答案 0 :(得分:0)

您是否考虑过使用ViewSwitcher更改显示的布局?

Jonathan

答案 1 :(得分:0)

如果toplayout是一个LinearLayout并且你写了   RelativeLayout toplayout = new RelativeLayout(this); 软件通常会在启动时崩溃(或者当激活此视图时),如果您现在遇到的是软件崩溃(或者当您开始此活动时)崩溃,则问题很可能是由此语句引起的。

答案 2 :(得分:0)

在您的示例中,您执行了此操作:

tag3.setOnLongClickListener(this);

你为什么这样做?

setOnLongClickListener 采用 OnLongClickLIstener 类型的参数。类似的东西:

tag3.setOnLongClickListener((OnLongClickListener) keyHdlr);

其中keyHdlr看起来像这样:

OnLongClickListener keyHdlr = new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    Log.d("long", "backspace phone land long clicked!!!!!!");
                    return false;
                }
            };