按钮悬停在android中不起作用

时间:2015-08-18 12:40:26

标签: android button hover



<?xml version="1.0" encoding="UTF-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <!-- <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="18dp"
        android:layout_marginTop="24dp"
        android:text="@string/name" /> -->

    <EditText
        android:id="@+id/etname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:ems="10" android:inputType="text"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etname"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="79dp"
        android:text="Login" />
    
    </RelativeLayout>
&#13;
&#13;
&#13;

我有一个按钮,我希望当我&#34; hover&#34;在按钮上显示一条带有祝酒词的问候消息。

布局中有一个按钮。我试图通过findViewById中的FirstActivity抓取它。然后我尝试使用button.setOnHoverListener,但它不起作用。

package com.example.datapass;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class FirstActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.form);

        final EditText name ; 
        Button loginButton ;

        //final Context context = this;


        /** Called when the activity is first created. */
        //name= (EditText) findViewById(R.id.etname) ;
        final TextView tv = (TextView) (findViewById(R.id.textView1) );
        loginButton = (Button) findViewById(R.id.button1);

        loginButton.setOnHoverListener(new View.OnHoverListener() {

            @Override
            public boolean onHover(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                Log.d("hover", "Bring yor cursor over the button");
                if(event.getAction()==MotionEvent.ACTION_HOVER_ENTER)
                {
                    //tv.setText("hi");
                    Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
                }

                return false;
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

任何人都可以解释错误吗?

1 个答案:

答案 0 :(得分:0)

值得将onHover方法改为如下所示,并在执行个别操作后中断:

@Override
public boolean onHover(View v, MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_HOVER_ENTER:
            Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
            break;
    }
    return false;
}

我还建议更改此行,因为这不是标准格式/语法:

final TextView tv = (TextView) (findViewById(R.id.textView1) );

改为:

final TextView tv = (TextView) findViewById(R.id.textView1);

但是,我认为您的实际问题更多地与移动设备上的支持有关,因为您的代码实际上似乎不会破坏此代码部分。大多数设备只能在使用手写笔时识别悬停,而实际上只能用手指识别。只有一些较高端的设备才能用手指实际识别悬停动作。这可能需要注意,建议您使用滑动或点击而不是悬停来显示Toast