如何在我的按钮上同时添加正确的longclick和普通点击?

时间:2014-02-12 15:17:33

标签: android android-layout android-listview android-fragments android-button

我正在测试一个简单的独立项目的longclick和短击功能。我打算做的是,当我点击一个按钮/标题时,它会调用一个片段,但是当我长时间点击即使没有释放我的手指时,我想要弹出窗口显示。无论我做长按还是短按,我当前的实现都会显示弹出窗口。我想只在长按一下弹出即可,而不是短暂的点击。此外,通过弹出选择菜单,我想触发相关选项的相关片段。有没有办法做到这一点?你能修改我现有的代码来反映吗? 谢谢! 这是我的代码: 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>

3 个答案:

答案 0 :(得分:2)

那么你应该实现自己的代码,但这是基础

btnList.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View vi) {

        }
});

btnList.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            return false;
        }

});

答案 1 :(得分:1)

尝试将文本视图或其他内容更改为按钮。然后为该对象添加两个侦听器:

onLongClickListener

onClickListner

您可以尝试将onLongClickListener添加到按钮对象,但我不确定这是否可行。

答案 2 :(得分:1)

您应该将OnLongClickListener添加到按钮:

  btnList.setOnLongClickListener(new View.OnLongClickListener() {   
   @Override
   public void onLongClick(View v) {
    //what you want to do 
        }   
  }); 

您可以从对话框中调用启动活动,也可以进行片段交易,但我不明白您想要做什么。