精华内容
下载资源
问答
  • extends textview
    2021-06-05 11:27:36

    这个自定义视图应该继承android.support.v7.widget.AppCompatTextView,我是这样写的成功,不过在eclipse下的。package com.example.studyandroid;import android.content.Context;import android.util.AttributeSet;import android.widget.TextView;public class Marquee extends TextView {public Marquee(Context context) {super(context);// TODO Auto-generated constructor stub}public Marquee(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public Marquee(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}@Overridepublic boolean isFocused() {return true;}}    

    你要不在extends 后改成 AppCompatTextView ,导入android.support.v7.widget.AppCompatTextView

    更多相关内容
  • Android自定义控件之extends textview

    千次阅读 2015-09-16 13:35:03
    Android自定义控件之extends textview 上效果图: 实现: 这个效果的实现有好多个方式,这里使用的是一个自定义状态的方式,咱们分三步走,代码如下: 1)自定义view,继承 TextView。当然对状态进行了自定义。 ...

    Android自定义控件之extends textview

    上效果图:


    实现:

    这个效果的实现有好多个方式,这里使用的是一个自定义状态的方式,咱们分三步走,代码如下:

    1)自定义view,继承 TextView。当然对状态进行了自定义。

    public class PseudoAwareTextView extends TextView {
        
        private static final int[] STATE_ONLY_ONE = new int[] {
            android.R.attr.state_first,
            android.R.attr.state_last,
        };
         
        private static final int[] STATE_FIRST = new int[] {
            android.R.attr.state_first
        };
         
        private static final int[] STATE_LAST = new int[] {
            android.R.attr.state_last
        };
     
        public PseudoAwareTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
         
        @Override
        protected int[] onCreateDrawableState(int extraSpace) {
            ViewGroup parent = (ViewGroup) getParent();
            if (parent == null) {
                return super.onCreateDrawableState(extraSpace);
            }
             
            final int size = parent.getChildCount();
            final boolean isFirst = (parent.getChildAt(0) == this);
            final boolean isLast = (parent.getChildAt(size-1) == this);
             
            int[] states = super.onCreateDrawableState(extraSpace + 2);
            if (isFirst && isLast) {
                mergeDrawableStates(states, STATE_ONLY_ONE);
            } else if (isFirst) {
                mergeDrawableStates(states, STATE_FIRST);
            } else if (isLast) {
                mergeDrawableStates(states, STATE_LAST);
            }
             
            return states;
        }
     
    }

    2)自定义不同状态下相对应的drawable

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <!-- First and last -->
        <item android:state_first="true" android:state_last="true"><shape>
                <solid android:color="#63abed" />
    
                <corners android:radius="10dp" />
            </shape></item>
    
        <!-- First -->
        <item android:state_first="true"><shape>
                <solid android:color="#63abed" />
    
                <corners android:bottomLeftRadius="10dp" android:topLeftRadius="10dp" />
            </shape></item>
    
        <!-- Last -->
        <item android:state_last="true"><shape>
                <solid android:color="#63abed" />
    
                <corners android:bottomRightRadius="10dp" android:topRightRadius="10dp" />
            </shape></item>
    
        <!-- Default -->
        <item><shape>
                <solid android:color="#63abed" />
            </shape></item>
    
    </selector>

    3)当然是在布局中使用,注意此时这几个view的父容器必须只是包含这几个自定义控件,不然效果会出错的。

    <LinearLayout xmlns:tools="http://schemas.android.com/tools"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        tools:context="com.example.androidtest.MainActivity" >
        
        <com.example.androidtest.PseudoAwareTextView
            android:id="@+id/pseudoAwareTextView1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:background="@drawable/sss"
            android:text="PseudoAwareTextView1" />
    
        <com.example.androidtest.PseudoAwareTextView
            android:id="@+id/pseudoAwareTextView2"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:background="@drawable/sss"
            android:text="PseudoAwareTextView2" />
    
        <com.example.androidtest.PseudoAwareTextView
            android:id="@+id/pseudoAwareTextView3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:background="@drawable/sss"
            android:text="PseudoAwareTextView3" />
    
    </LinearLayout>

    到此为止,试试效果怎么样。


    展开全文
  • /** * 具有跑马灯效果的TextView * 实际上就是将使用这个MarqueeTextView控件的全部设置为强制被选中 */ public class MarqueeTextView extends TextView{ public MarqueeTextView(Context context) { super...

    编写不易,如有转载,请声明出处:http://blog.csdn.net/zxc514257857/article/details/70184606

    实现原理

      自定义一个MarqueeTextView类,继承Text,将MarqueeTextView强制设置为被选中状态,然后一直进行滚动。

    Demo展示图片

    这里写图片描述

    实现代码如下

    //布局代码
    //(layout)activity_main.xml
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.test.marqueetextview.activity.MainActivity">
    
        <TextView
            android:id="@+id/title1"
            android:paddingTop="10dp"
            android:paddingLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"/>
    
        <com.test.marqueetextview.view.MarqueeTextView
            android:id="@+id/name1"
            android:paddingTop="10dp"
            android:layout_toRightOf="@+id/title1"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:text="尼古拉斯赵四"/>
    
        <TextView
            android:id="@+id/title2"
            android:layout_marginTop="10dp"
            android:layout_below="@+id/title1"
            android:paddingTop="10dp"
            android:paddingLeft="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名:"/>
    
        <com.test.marqueetextview.view.MarqueeTextView
            android:id="@+id/name2"
            android:layout_marginTop="10dp"
            android:paddingTop="10dp"
            android:layout_below="@+id/name1"
            android:layout_toRightOf="@+id/title2"
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:text="郭达斯坦森"/>
    
    </RelativeLayout>
    -------------------------------------------------------------------
    //自定义控件代码
    //(view)MarqueeTextView
    import android.content.Context;
    import android.util.AttributeSet;
    import android.widget.TextView;
    
    /**
     * 具有跑马灯效果的TextView
     * 实际上就是将使用这个MarqueeTextView控件的全部设置为强制被选中
     */
    
    public class MarqueeTextView extends TextView{
    
        public MarqueeTextView(Context context) {
            super(context);
        }
    
        public MarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        public MarqueeTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        /**强制被选中*/
        @Override
        public boolean isFocused() {
            return true;
        }
    }
    -------------------------------------------------------------------
    //activity代码
    //(activity)MainActivity
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import com.test.marqueetextview.R;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

    Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9815066


    ----------因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!----------

    展开全文
  • TextView的基础使用; 文字阴影效果的实现; 跑马灯文字效果的实现;

    Android Studio学习日记之(一)TextView控件

    1.基础的TextView控件知识

    TextView - - - - 点击可查阅API文档的官方解释

    XML attributesAPI文档解释中文释义
    android: layout_width-组件的宽度
    android: layout_height-组件的高度
    android:id-为组件设置的id
    android:text-显示的文本内容
    android:textColor-文本颜色
    android:textStyle-文本风格,有3个可选值:normal(无效果), bold(加粗),italic(斜体)
    android:textSize-文本尺寸
    android:background-控件的背景色,或者图片也可
    android:gravity-控件内容的对齐方向

    代码实现:

    strings.xml

    <resources>
        <string name="app_name">MyASDemo</string>
        <string name="text01">你好啊</string>
    </resources>
    

    colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="purple_100">#CCCCFF</color>
        <color name="LemonChiffon">#FFFACD</color>
    </resources>
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <!--基础的textView内容-->
        <TextView
            android:id="@+id/text01"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/text01"
            android:textColor="@color/purple_100"
            android:textSize="60sp"
            android:background="@color/LemonChiffon"
            android:gravity="center_horizontal"
            />
    
    </LinearLayout>
    

    【注意】:
    我们也可以根据TextView的id值,在MainActivity.java文件上添加文字,而且它会覆盖掉在activity_main.xml的原本文本值。

    MainActivity.java

    package com.example.myasdemo;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //获取activity_main.xml文件中id值为text01的组件
            TextView text1 = findViewById(R.id.text01);
            //设置text01的文本值,此处会覆盖掉activity_main.xml的文本值
            text1.setText("你好啊");
        }
    }
    

    运行效果:
    在这里插入图片描述

    2.文字的阴影效果

    XML attributes中文释义
    android:shadowColor设置阴影颜色,需要和shadowRadius一起使用
    android:shadowRadius设置阴影的模糊程度
    android:shadowDx设置阴影在水平方向的偏移
    android:shadowDy设置阴影在竖直方向的偏移

    代码实现:

    strings.xml

    <resources>
        <string name="app_name">MyASDemo</string>
       <string name="text02">HELLO</string>
    </resources>
    

    colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
           <color name="OliveDrab1">#C0FF3E</color>
        <color name="LightCyan">#E0FFFF</color>
    </resources>
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
         <!--关于阴影的特效:shadowColor、shadowRadius、shadowDx、shadowDy-->
        <TextView
            android:id="@+id/text02"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:text="@string/text02"
            android:textSize="60sp"
            android:textStyle="italic"
            android:gravity="center"
            android:background="@color/LightCyan"
            android:shadowColor="@color/OliveDrab1"
            android:shadowRadius="10.0"
            android:shadowDx="20.0"
            android:shadowDy="20.0"
            />
    
    </LinearLayout>
    

    运行效果:
    在这里插入图片描述

    3.文字的跑马灯效果

    XML attributes中文释义
    android:singleLine内容单行显示
    android:focusable是否可以获取焦点
    android:focusableInTouchMode制视图在触摸模式下是否可以聚焦
    android:ellipsize省略文本的位置(当文本很长时,用…代替)
    android:marqueeRepeatLimit字幕动画的重复次数

    代码实现:
    strings.xml

    <resources>
        <string name="app_name">MyASDemo</string>
          <string name="text03">bonjour bonjour bonjour bonjour bonjour bonjour bonjour</string>
    </resources>
    

    colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="SeaGreen">#2E8B57</color>
        <color name="LemonChiffon">#FFFACD</color>
    </resources>
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <!--关于跑马灯的应用-->
        <!--  android:clickable="true"是确定滑动的关键-->
        <TextView
            android:id="@+id/text03"
            android:layout_width="match_parent"
            android:layout_height="180sp"
            android:text="@string/text03"
            android:textSize="60sp"
            android:textStyle="bold"
            android:textColor="@color/SeaGreen"
            android:background="@color/LavenderBlush"
            android:gravity="center"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:clickable="true"
            />
    
    </LinearLayout>
    

    这里我们有3个实现跑马灯的关键方法:

    • 方法1:在TextView控件里面加入 android:clickable=“true”
    • 方法2:在java文件下新建一个.java文件,同时将< TextView />更改成该文件的名字

    e.g.

    myTextView.java

    package com.example.myasdemo;
    
    import android.content.Context;
    import android.util.AttributeSet;
    
    
    import androidx.annotation.Nullable;
    
    public class myTextView extends androidx.appcompat.widget.AppCompatTextView {
    	//创建构造方法
        public myTextView(Context context) {
            super(context);
        }
    
        public myTextView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
    
        public myTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
    	//该方法是关键!!!
        @Override
        public boolean isFocused() {
            return true;
        }
    }
    
    

    在activity_main.xml的对应处进行修改
    在这里插入图片描述

    • 方法3:在TextView控件后面直接加上 < requestFocus />
      在这里插入图片描述

    运行效果:
    (文字滑动效果)
    在这里插入图片描述

    展开全文
  • 图1 TextView实现自动滚动效果图 第一步、创建一个自定义的类,让它继承TextView,然后添加默认方法,为以后扩展你的TextView,添加所有方法,其方法分别是:public AutoScrollTextView(Context context, ...
  • 前言 由于Android自带的TextView控件没有提供倾斜的...public class LeanTextView extends TextView { public int getmDegrees() { return mDegrees; } public void setmDegrees(int mDegrees) { this.mDegrees =
  • 本文为大家分享一个非常简单但又很常用的控件,跑马灯状态的TextView。当要显示的文本长度太长,又不想换行时用它来显示文本,一来...public class MarqueeTextView extends TextView { public MarqueeTextView(Cont
  • TextView倾斜: ...public class MyTextView extends TextView{ public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) {
  • public class AutoFitTextView extends TextView { private Paint mTextPaint; private float mTextSize; public AutoFitTextView(Context context) { super(context); } public AutoFitTextView(Context c
  • 要这样自定义控件的原因: 需求:一个界面两个跑马灯(在xml中实现) Textview在xml文件中实现跑马灯,如果有两个跑马灯,则会出现抢焦点的现象,只会跑一个 ...public class MyTextView extends TextView { ...
  • public class ExpandableTextView extends TextView { private static int MIN_LINE_NUM = 2; private static int MAX_LINE_NUM = 20; private int lineNum = MIN_LINE_NUM; private boolean mIsExpanded = ...
  • Android自定义竖排TextView实现实例 前言: 之前做联系人模块的时候遇到一个左侧索引控件,里面的字符都是竖直方向上排列的...public class MainActivity extends Activity implements OnTouchListener { private Ver
  • 本文实例讲述了Android编程实现自动调整TextView字体大小以适应文字长度的方法。分享给大家供大家参考,具体如下: ...public class CustomTextView extends TextView { private static float DEF
  • public class MarqueeTextView extends TextView { /** 是否停止滚动 */ private boolean mStopMarquee; private String mText; private float mCoordinateX; private float mTextWidth; public MarqueeTe
  • public class HightLightTextView extends TextView { // 存储view的宽度 private int mTextViewWidth = 0; // 画笔 private Paint mPaint; // 线性渲染 private LinearGradient mLinearGradient; // 存储...
  • android 自定义控件继承TextView

    千次阅读 2016-02-29 20:59:49
    在原生控件上进行扩展,增加新的功能 一般是在onDraw() 方法中对原生控件进行扩展 下面以一个TextView 为例,来看看...public class M_TextView extends TextView{ public M_TextView(Context context, Attribute
  • TextView中的超链接可以通过几种方式实现: ...TextView,本身就支持部分的... public class Test10Activity extends Activity { TextView textView ; @Override protected void onCreate(Bundle savedInstanceState)
  • Android自带的跑马灯效果不太好控制,不能控制速度,... android:ellipsize=”marquee” android:singleLine=”true” 这两个属性也要加上 代码如下: public class MarqueeText extends TextView implements Runnable {
  • 在一个比较坑的需求里,一段文字右上角...public class MyViewAndCircle extends View{ } 然后不用说了 ,直接飘红,必须要实现几个必要的方法了。 public MyViewAndCircle(Context context) { this(context,null
  • TextView

    千次阅读 2016-01-12 16:18:59
    文本控件显示富文本(URL、不同大小、字体、颜色的文本)在TextView中预定义了一些类似HTML标签(不区分大小写),通过这些标签,我们可以使TextView控件显示不同的颜色、大小、字体的文字。 常见的标签如下: ...
  • Android TextView设置跑马灯效果

    千次阅读 2022-01-24 15:48:27
    Textview设置的宽度有限,而需要显示的文字又比较多的情况下,往往需要给Textview设置跑马灯效果才能让用户完整地看到所有设置的文字,所以给TextView设置跑马灯效果的需求是很常见的 一、新手设置跑马灯效果 .....
  • public class MyTextView extends TextView{ public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyTextView(Context ...
  • 本文实例讲述了Android TextView添加超链接的方法。分享给大家供大家参考,具体如下: public class Link extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...
  • Android之TextView超链接

    2019-09-27 10:05:03
    TextView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动... public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanc...
  • 本文实例讲述了Android TextView实现带链接文字事件监听的...public class TextViewLinkAct extends Activity { private TextView tv_3; private TextView tv_4; @Override protected void onCreate(Bundle savedI
  • 安卓 TextView 七宗罪

    万次阅读 多人点赞 2016-04-01 17:51:14
    本文探究 TextView 存在的几个坑,以及其中几个坑的解决方法。
  • 效果:循环滚动,类似广告条思路:开启定时器刷新绘制文本的...代码如下:public class ScrollTextView extends TextView { private static final String TAG = "ScrollTextView"; private String mT...
  • 情景,正常TextView中设置文本内容中包含中英文时会造成自动换行的问题,影响界面显示效果,如图:网上很多解决途径,甚至有多三方框架处理,但是效果并不能达到,最终是要如下代码完美解决,效果图如下:具体实现...
  • databinding 入门 知识 给TextView 赋值

    千次阅读 2019-12-10 11:11:26
    在上一张中记录怎样创建布局的 这里就不说了下面写2个textview 具体代码如下 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <...
  • Android之——自定义TextView

    千次阅读 2015-07-27 11:48:54
    在这一篇博文中,将向大家介绍如何以最简单的方式,来自定义Android中的控件,下面我们以自定义TextView为例来向大家介绍如何自定义Android中的控件。 首先,我们来简单说一下Android中自定义控件的原理:创建一个类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 238,273
精华内容 95,309
关键字:

extends textview