0

我有一个自定义视图 DisView(Context, bitmap),我想在其中添加一个 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);

我应该补充一点,最初活动的内容视图设置为线性布局,但是在单击按钮时, setContentLayout() 使相对布局成为新布局。

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

@Override
public boolean onLongClick(View view) {

    moveTag(view);
    return true;
}

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

4

3 回答 3

0

在您的示例中,您这样做了:

tag3.setOnLongClickListener(this);

你为什么这么做?

setOnLongClickListener采用 OnLongClickLIsener 类型的参数。就像是:

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;
                }
            };
于 2012-04-11T01:33:05.333 回答
0

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

乔纳森

于 2010-12-23T11:38:52.607 回答
0

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

于 2010-12-23T11:47:33.677 回答