我有一个自定义视图,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。我不知道为什么它不起作用。我有一种感觉,可能是因为我改变了布局。
答案 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;
}
};