• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 Google Inc.
3  * Licensed to The Android Open Source Project.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.android.mail.text;
19 
20 import android.text.TextPaint;
21 import android.text.style.ClickableSpan;
22 import android.view.View;
23 
24 /**
25  * A span that makes text look like a link. It uses link color and
26  * has no underline but clicking it does nothing.<p/>
27  *
28  * WARNING: this span will not work if the TextView it uses
29  * saves and restores its text since TextView can only save
30  * and restore {@link android.text.ParcelableSpan}s which
31  * can only be implemented by framework Spans.
32  */
33 public class LinkStyleSpan extends ClickableSpan {
34 
35     /**
36      * The onclick listener invoked when the link is clicked.
37      */
38     final View.OnClickListener mOnClickListener;
39 
LinkStyleSpan(View.OnClickListener onClickListener)40     public LinkStyleSpan(View.OnClickListener onClickListener) {
41         mOnClickListener = onClickListener;
42     }
43 
44     @Override
onClick(View widget)45     public void onClick(View widget) {
46         if (mOnClickListener != null) {
47             mOnClickListener.onClick(widget);
48         }
49     }
50 
51     /**
52      * Makes the text in the link color and not underlined.
53      */
54     @Override
updateDrawState(TextPaint ds)55     public void updateDrawState(TextPaint ds) {
56         ds.setColor(ds.linkColor);
57         ds.setUnderlineText(false);
58     }
59 }
60