时间:2010-07-25 10:02:36

标签: android onclick listener textview

8 个答案:

答案 0 :(得分:447)

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

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

不要忘记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"/>
    ...

MyActivity.java

       public class MyActivity extends Activity {

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

答案 1 :(得分:42)

这可能不是你想要的,但这对我正在做的事情起作用。所有这一切都在我的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");
    }
});

答案 2 :(得分:28)

答案 3 :(得分: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());
                }
            }
        });

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

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

并在strings.xml文件中

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

答案 4 :(得分:6)

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

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

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

答案 5 :(得分:6)

中的

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

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

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!

target 'GiftsToMyFriends' do
    pod "FBSDKCoreKit"
    pod "FBSDKLoginKit"
    pod "FBSDKShareKit"
    pod "FBSDKMessengerShareKit"
end

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

答案 6 :(得分:3)

要点击文本的一部分(而不是整个TextView),您可以使用HtmlLinkify(两者都创建打开网址的链接,但不是回调应用程序)。

Linkify

使用字符串资源,如:

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

然后在textview中:

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中:

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

答案 7 :(得分:0)

你可以使用TextWatcher for TextView,比ClickLinstener更灵活(不是最好或更糟,只有一种方式)。

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!

        }
    });