如何在 Android 中使文本视图可点击?

30

在Android中,是否可以使TextView可点击?如果可以,请问怎么实现?如果不行,那么有什么方法可以使标签可点击吗?我想要通过这个来实现呼叫活动。

private void call() {
     try {
         Intent callIntent = new Intent(Intent.ACTION_CALL);
         callIntent.setData(Uri.parse("tel:"+keywordxmlparsing.phone));
         startActivity(callIntent);
     } catch (ActivityNotFoundException activityException) {
         Log.e("dialing-example", "Call failed", activityException);
     }
 }

提前感谢您的回复...


可能是如何在TextView文本上单击或轻敲的重复问题。 - Confuse
11个回答

52
textView.setOnClickListener(new View.OnClickListener());

你试过这个了吗?


18

更容易地在XML中直接实现:使用 clickable = true

<TextView
                android:id="@+id/forgotPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="10dp"
                android:text="@string/forgotPassword"
                android:onClick="forgotPassword"
                android:clickable="true"
                />

你能否在XML中执行“长按”操作? - Joshua Pinter

11
我们也可以像在 ButtonImageView 上一样,在 TextView 上获取点击事件。
并且对于所有视图,方法也是相同的。
例如:
view.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });

6
说实话,我发现对于我在RecyclerView中所做的工作,扁平按钮的效果更好:
<Button
android:id="@+id/btnFoo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/borderlessButtonStyle"/>

来源:https://dev59.com/ZHA75IYBdhLWcg3wYH7I#30884132

接着,自定义按钮以适应我的布局,最后在onCreate下面添加以下内容到我的MainActivity.java中:

Button btnFoo = (Button) findViewById(R.id.btnFoo);
btnFoo.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {
      Intent intent = new Intent(MainActivity.this, FooActivity.class);
      startActivity(intent);
   }
});

这就是我一直在寻找的。谢谢 :) - rzaaeeff

6

首先,在您的Java文件中,通过xml id将您的TextView转换为对象。

TextView tv = (TextView)findViewById(R.Id.textView1);

那么,接下来,
tv.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
      // TODO Auto-generated method stub
   }
});

4
在该TextView的XML中包括该字段。
android:onClick="functionName"

然后在与该xml相关的java文件中包含此函数

public void functionName(View view){
// do your stuff
}

4

试试这个:

view.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});

2
你可以像给按钮一样给TextView设置一个onclick监听器。实际上,按钮从TextView继承了属性。

0

虽然你提出问题已经很久了,但我认为实现你想要的功能的正确方法是设置TextView的xml属性android:autoLink。例如:

<TextView 
    ...
    android:autoLink="phone" />

0

TextView也是从View派生而来的,就像EditText、ListView等一样,因此我们可以使用它。

textView.setOnClickListener(new View.OnClickListener());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接