如何单击或点击TextView文本

Dro*_*oid 190 android onclick listener textview

我知道这很容易(doh ...)但是我正在寻找一种方法来在Android应用程序中点击或单击TextView文本行来运行方法.

我一直在考虑按钮监听器和匿名方法监听器调用,但它似乎不适用于TextView.

有人能指出我的一些代码片段,以显示如何点击或点击TextView中的一段文本运行方法吗?

Pat*_*len 450

您可以使用以下属性在xml中设置单击处理程序:

android:onClick="onClick"
android:clickable="true"
Run Code Online (Sandbox Code Playgroud)

不要忘记clickable属性,如果没有它,则不会调用click处理程序.

main.xml中

    ...

    <TextView 
       android:id="@+id/click"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"               
       android:text="Click Me"
       android:textSize="55sp"
       android:onClick="onClick"                
       android:clickable="true"/>
    ...
Run Code Online (Sandbox Code Playgroud)

MyActivity.java

       public class MyActivity extends Activity {

          public void onClick(View v) {
            ...
          }  
       }
Run Code Online (Sandbox Code Playgroud)

  • "不要忘记clickable属性,没有它,不会调用click处理程序." 这条线保存了一天.非常感谢好友. (60认同)
  • 似乎`onClick` _does_在Android 5.0 Lollipop(API 21)中设置了`clickable`属性.也许他们认为这是旧版本中没有发生的错误? (5认同)
  • 有趣的是,使用`setOnClickListener`设置`clickable`属性,但使用`onClick`属性显然没有. (4认同)
  • http://developer.android.com/reference/android/view/View.html#attr_android:onClick需要提及有关可点击的内容.可以节省一个小时. (2认同)

Jos*_*and 46

这可能不是你想要的,但这对我正在做的事情有用.所有这一切都在我之后onCreate:

boilingpointK = (TextView) findViewById(R.id.boilingpointK);

boilingpointK.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if ("Boiling Point K".equals(boilingpointK.getText().toString()))
            boilingpointK.setText("2792");
        else if ("2792".equals(boilingpointK.getText().toString()))
            boilingpointK.setText("Boiling Point K");
    }
});
Run Code Online (Sandbox Code Playgroud)


Dro*_*oid 28

好的我已回答了我自己的问题(但这是最好的方法吗?)

这是在单击或点击TextView中的某些文本时运行方法的方法:

package com.textviewy;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class TextyView extends Activity implements OnClickListener {

TextView t ;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    t = (TextView)findViewById(R.id.TextView01);
    t.setOnClickListener(this);
}

public void onClick(View arg0) {
    t.setText("My text on click");  
    }
}
Run Code Online (Sandbox Code Playgroud)

我的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"
 >
<LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content"             android:layout_height="wrap_content"></LinearLayout>
<ListView android:id="@+id/ListView01" android:layout_width="wrap_content"   android:layout_height="wrap_content"></ListView>
<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content"   android:layout_height="wrap_content"></LinearLayout>

<TextView android:text="This is my first text"
 android:id="@+id/TextView01" 
 android:layout_width="wrap_content" 
 android:textStyle="bold"
 android:textSize="28dip"
 android:editable = "true"
 android:clickable="true"
 android:layout_height="wrap_content">
 </TextView>
 </LinearLayout>
Run Code Online (Sandbox Code Playgroud)


ton*_*gil 13

从调用布局和textview的活动内部,此单击侦听器工作:

setContentView(R.layout.your_layout);
TextView tvGmail = (TextView) findViewById(R.id.tvGmail);
String TAG = "yourLogCatTag";
tvGmail.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View viewIn) {
                try {
                    Log.d(TAG,"GMAIL account selected");
                } catch (Exception except) {
                    Log.e(TAG,"Ooops GMAIL account selection problem "+except.getMessage());
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

文本视图声明如下(默认向导):

        <TextView
            android:id="@+id/tvGmail"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/menu_id_google"
            android:textSize="30sp" />
Run Code Online (Sandbox Code Playgroud)

并在strings.xml文件中

<string name="menu_id_google">Google ID (Gmail)</string>
Run Code Online (Sandbox Code Playgroud)


Con*_*use 8

虽然您可以通过将侦听器设置为textview来解决问题,但建议不要这样做.你应该使用平面按钮,因为它是Button的子类,它提供了许多TextView没有的属性.


要使用平面按钮,请添加style="?android:attr/borderlessButtonStyle"属性 -

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="DONE"
    style="?android:attr/borderlessButtonStyle"/>
Run Code Online (Sandbox Code Playgroud)


小智 7

在textView中

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Text"
    android:onClick="onClick"
    android:clickable="true"
Run Code Online (Sandbox Code Playgroud)

您还必须实现View.OnClickListener,并且在On Click方法中可以使用intent

    Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
           intent.setData(Uri.parse("https://youraddress.com"));    
            startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我测试这个解决方案工作正常.