Android 如何在按钮中同时添加适当的长单击和普通单击?
我正在为一个简单的独立项目测试longclick和short click功能。我计划做的是,当我点击一个按钮/标题时,它会调用一个片段,但当我长时间点击,即,即使没有松开手指,我也希望弹出窗口显示出来。我当前的实现显示弹出窗口,无论我长按还是短按。我想显示弹出只有在长时间点击,而不是在短时间点击。另外,通过弹出的选择菜单,我想触发一个与所选选项相关的片段。有没有办法做到这一点?你能修改我现有的代码来反映这一点吗? 谢谢 这是我的密码: Mainactivity.java:Android 如何在按钮中同时添加适当的长单击和普通单击?,android,android-layout,android-listview,android-fragments,android-button,Android,Android Layout,Android Listview,Android Fragments,Android Button,我正在为一个简单的独立项目测试longclick和short click功能。我计划做的是,当我点击一个按钮/标题时,它会调用一个片段,但当我长时间点击,即,即使没有松开手指,我也希望弹出窗口显示出来。我当前的实现显示弹出窗口,无论我长按还是短按。我想显示弹出只有在长时间点击,而不是在短时间点击。另外,通过弹出的选择菜单,我想触发一个与所选选项相关的片段。有没有办法做到这一点?你能修改我现有的代码来反映这一点吗? 谢谢 这是我的密码: Mainactivity.java: package com
package com.example.longclick;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button btnList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnList = (Button)this.findViewById(R.id.btnListSample);
btnList.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final CharSequence[] items = {"Personal Lists", "Shared Lists"};
AlertDialog.Builder listBuilder = new AlertDialog.Builder(MainActivity.this);
listBuilder.setTitle("Manage Categories");
listBuilder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alertList = listBuilder.create();
alertList.show();
}
});
}
}
和相关的xml:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:text="Lists Header"
android:id="@+id/btnListSample"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</Button>
</LinearLayout>
尝试将按钮更改为文本视图或其他方式。然后,为该对象添加两个侦听器: 及
您可以尝试将onLongClickListener添加到button对象,但我不确定这是否可行 您应仅将LongClickListener添加到按钮:
btnList.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public void onLongClick(View v) {
//what you want to do
}
});
您可以从对话框中调用启动活动,也可以进行片段事务,但我不知道您到底想做什么。您应该实现自己的代码,但以下是一些基本内容
btnList.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View vi) {
}
});
btnList.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false;
}
});
让它工作起来了,谢谢!只需知道,是否有一种方法可以通过触摸弹出窗口外部来解除呼叫?popup.setCanceledOnTouchOut(true);