টেক্সটভিউ পাঠ্যে কীভাবে ক্লিক বা ট্যাপ করবেন


199

আমি জানি এটি খুব সহজ (দোহ ...) তবে আমি কোনও অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে টেক্সটভিউ লাইনের আলতো চাপতে বা ক্লিক করতে একটি পদ্ধতি চালানোর জন্য উপায় খুঁজছি।

আমি বোতাম শ্রোতাদের এবং বেনামে পদ্ধতি শ্রোতার কলগুলি সম্পর্কে ভাবতে থাকি, তবে এটি কেবল টেক্সটভিউতে প্রয়োগ হয় না বলে মনে হয়।

টেক্সটভিউতে কোনও পাঠ্যের টুকরোটিতে ক্লিক বা ট্যাপ করা কীভাবে কোনও পদ্ধতি চালায় তা দেখানোর জন্য কেউ আমাকে কিছু কোড স্নিপেটে নির্দেশ করতে পারে?


64
আপনার সত্যিকারের সর্বাধিক উত্তর গ্রহণ করা উচিত।
মারেক সেবেরা

8
এটি করতে তাকে লগ ইন করতে হবে।
কার্ল অ্যান্ডারসন

15
এবং তিনি একটি দুর্দান্ত ব্যবহারকারীর নামও সরিয়ে নিয়েছেন: /
মিলিত

ভবিষ্যতের জন্য, যদি কেউ কোটলিন ব্যবহার করছে এবং কলব্যাকের সাহায্যে ক্লিকযোগ্য পাঠ্যের উপর সম্পূর্ণ নিয়ন্ত্রণ রাখতে চায় - আমি এটির জন্য একটি লিখিত লিখেছিলাম TextView- link.medium.com/TLq6s8ltc3
হোসেন খান

উত্তর:


456

আপনি এই বৈশিষ্ট্যটি সহ এক্সএমএলে ক্লিক হ্যান্ডলারটি সেট করতে পারেন:

android:onClick="onClick"
android:clickable="true"

ক্লিকযোগ্য বৈশিষ্ট্যটি ভুলে যাবেন না, এটি ছাড়া ক্লিক ক্লিককারীকে কল করা হয় না।

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"/>
    ...

MyActivity.java

       public class MyActivity extends Activity {

          public void onClick(View v) {
            ...
          }  
       }

60
"ক্লিকযোগ্য বৈশিষ্ট্যটি ভুলে যাবেন না, এটি ছাড়া ক্লিক ক্লিককারীকে কল করা হয় না" " এই লাইনটি আপনার দিন বাঁচিয়েছে। অনেক অনেক বন্ধু।
N-JOY

2
বিকাশকারী.অ্যান্ড্রয়েড .com/references/android/view/… ক্লিকযোগ্য সম্পর্কে কিছু উল্লেখ করা দরকার। এক ঘন্টা বাঁচাতে পারত
টেলর

4
যথেষ্ট মজাদার, ব্যবহার setOnClickListenerকরে clickableঅ্যাট্রিবিউট সেট করে , তবে onClickঅ্যাট্রিবিউটটি স্পষ্টত ব্যবহার করে না।
njzk2

5
এটা তোলে মত মনে হয় onClick না সেট clickableঅ্যান্ড্রয়েড 5.0 Lollipop (এবং এপিআই 21) মধ্যে অ্যাট্রিবিউট। সম্ভবত তারা এটি একটি ত্রুটি হিসাবে বিবেচনা করেছে যা পুরানো সংস্করণগুলিতে ঘটেছিল না?
মার্ক ডলিনার

এক্সএমএল এর মাধ্যমে দীর্ঘ ক্লিকের জন্য এটি করার কোনও উপায় আছে কি?
অ্যামিথ

52

এটি আপনি যা খুঁজছেন তা পুরোপুরি নাও হতে পারে তবে আমি যা করছি তার জন্য এটিই কাজ করেছে। এই সব আমার পরে 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");
    }
});

28

ঠিক আছে আমি আমার নিজের প্রশ্নের উত্তর দিয়েছি (তবে এটি কি সেরা উপায়?)

আপনি যখন কোনও টেক্সটভিউতে কিছু পাঠ্য ক্লিক বা ট্যাপ করেন তখন কোনও পদ্ধতিটি চালাবেন:

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

এবং আমার মূল। এক্সএমএল হ'ল:

<?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>

13

একটি ক্রিয়াকলাপের ভিতরে যা একটি বিন্যাস এবং একটি পাঠ্যদর্শনকে কল করে, এই ক্লিক শ্রোতারা কাজ করে:

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

পাঠ্য দর্শনটি এইরূপে ঘোষিত হয়েছে (ডিফল্ট উইজার্ড):

        <TextView
            android:id="@+id/tvGmail"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/menu_id_google"
            android:textSize="30sp" />

এবং স্ট্রিং.এক্সএমএল ফাইলে

<string name="menu_id_google">Google ID (Gmail)</string>

11

যদিও আপনি শ্রোতাকে পাঠ্যদর্শনটিতে সেট করে সমস্যার সমাধান করতে পারেন, এটি না করার পরামর্শ দেওয়া হচ্ছে। আপনার ফ্ল্যাট বোতামটি ব্যবহার করা উচিত কারণ এটি বোতামের একটি সাবক্লাস এবং এটি অনেকগুলি বৈশিষ্ট্য সরবরাহ করে যা টেক্সটভিউ না করে।


ফ্ল্যাট বোতামটি ব্যবহার করতে, style="?android:attr/borderlessButtonStyle"বৈশিষ্ট্য যুক্ত করুন -

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="DONE"
    style="?android:attr/borderlessButtonStyle"/>

7

টেক্সটভিউতে

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Text"
    android:onClick="onClick"
    android:clickable="true"

আপনাকে অবশ্যই View.OnClickListener প্রয়োগ করতে হবে এবং অন ক্লিক পদ্ধতিতে অভিপ্রায় ব্যবহার করতে পারেন

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

আমি এই সমাধানটি ঠিকঠাক করে পরীক্ষা করেছি।


3

পাঠ্যের কোনও অংশে ক্লিক করতে (পুরোটি নয় TextView) আপনি ব্যবহার করতে পারেন Htmlবা Linkify(উভয়ই লিঙ্ক তৈরি করে যা অ্যাপ্লিকেশনটিতে কলব্যাক নয়, তবে url খোলায়)।

Linkify

স্ট্রিং রিসোর্স ব্যবহার করুন যেমন:

<string name="links">Here is a link: http://www.stackoverflow.com</string>

তারপরে একটি পাঠ্যদৃষ্টিতে:

TextView textView = ...
textView.setText(R.string.links);
Linkify.addLinks(textView, Linkify.ALL);

Html

ব্যবহার Html.fromHtml:

<string name="html">Here you can put html &lt;a href="http://www.stackoverflow.com"&gt;Link!&lt;/&gt;</string>

তারপরে আপনার পাঠ্যদর্শনটিতে:

textView.setText(Html.fromHtml(getString(R.string.html)));

0

আপনি টেক্সটভিউর জন্য টেক্সটওয়াটার ব্যবহার করতে পারেন, ক্লিকলিস্টেনারের তুলনায় আরও নমনীয় (সবচেয়ে ভাল বা খারাপ নয়, কেবলমাত্র একটি উপায়)।

holder.bt_foo_ex.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // code during!

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            // code before!

        }

        @Override
        public void afterTextChanged(Editable s) {
            // code after!

        }
    });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.