Android 如何在按钮中同时添加适当的长单击和普通单击?

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

我正在为一个简单的独立项目测试longclick和short click功能。我计划做的是,当我点击一个按钮/标题时,它会调用一个片段,但当我长时间点击,即,即使没有松开手指,我也希望弹出窗口显示出来。我当前的实现显示弹出窗口,无论我长按还是短按。我想显示弹出只有在长时间点击,而不是在短时间点击。另外,通过弹出的选择菜单,我想触发一个与所选选项相关的片段。有没有办法做到这一点?你能修改我现有的代码来反映这一点吗? 谢谢 这是我的密码: Mainactivity.java:

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);