首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

textview实现placeholder效果

TextView是Android中常用的一个控件,用于显示文本内容。实现placeholder效果可以通过以下几种方式:

  1. 使用Hint属性:TextView的Hint属性可以设置一个占位提示文本,用于在TextView没有输入内容时显示。示例代码如下:
代码语言:txt
复制
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="请输入内容"
    />
  1. 使用TextWatcher监听器:通过监听TextView的文本变化,可以在文本为空时手动设置占位提示文本。示例代码如下:
代码语言:txt
复制
TextView textView = findViewById(R.id.text_view);
textView.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }
    
    @Override
    public void afterTextChanged(Editable s) {
        if (s.length() == 0) {
            textView.setText("请输入内容");
        }
    }
});
  1. 自定义TextView:继承TextView并重写其onDraw()方法,在没有输入内容时绘制占位提示文本。示例代码如下:
代码语言:txt
复制
public class PlaceholderTextView extends TextView {
    private String placeholderText;

    public PlaceholderTextView(Context context) {
        super(context);
    }

    public PlaceholderTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(attrs);
    }

    public PlaceholderTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(attrs);
    }

    private void init(AttributeSet attrs) {
        TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.PlaceholderTextView);
        placeholderText = typedArray.getString(R.styleable.PlaceholderTextView_placeholderText);
        typedArray.recycle();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if (getText().length() == 0 && placeholderText != null) {
            Paint paint = getPaint();
            paint.setColor(getCurrentTextColor());
            paint.setTextSize(getTextSize());
            paint.setTextAlign(Paint.Align.LEFT);

            canvas.drawText(placeholderText, getPaddingLeft(), getBaseline(), paint);
        }
    }

    public void setPlaceholderText(String placeholderText) {
        this.placeholderText = placeholderText;
        invalidate();
    }
}

在布局文件中使用自定义的PlaceholderTextView:

代码语言:txt
复制
<com.example.app.PlaceholderTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:placeholderText="请输入内容"
    />

以上就是实现TextView的placeholder效果的几种方法。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供弹性扩展的云服务器,适用于各种应用场景。详情请参考:https://cloud.tencent.com/product/cvm
  • 云原生容器服务(TKE):基于Kubernetes的容器托管服务,帮助用户快速构建、部署和管理容器化应用。详情请参考:https://cloud.tencent.com/product/tke
  • 云数据库MySQL版(CDB):提供高可靠、弹性伸缩的托管型关系型数据库服务。详情请参考:https://cloud.tencent.com/product/cdb
  • 云存储对象存储(COS):提供安全、稳定、低成本的对象存储服务,适用于海量文件存储和数据备份。详情请参考:https://cloud.tencent.com/product/cos
  • 人工智能实验室(AI Lab):提供各类人工智能服务,包括图像识别、自然语言处理、机器学习等。详情请参考:https://cloud.tencent.com/product/ai_lab
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • TextView使用SpannableString设置复合文本 SpannableString实现TextView的链接效果

    一、简介 TextView使用SpannableString设置复合文本 TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。...BackgroundColorSpan 背景色 2、ClickableSpan 文本可点击,有点击事件 3、ForegroundColorSpan 文本颜色(前景色) 4、MaskFilterSpan 修饰效果...,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter) 5、MetricAffectingSpan 父类,一般不用 6、RasterizerSpan 光栅效果 7、StrikethroughSpan...text.length(), }, 3, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 说明,设置点击事件是使用的ClickableSpan() ,如果想要设置其他效果就用其它的好了..., 就是最上面列举的那么多 三、代码实例 效果图 ?

    1.4K20

    Android实用:TextView实现打印机效果

    今天为大家带来一篇实用的自定义view,就是是TextView实现文字逐个显示(类似打印机打字一样,逐个显示的效果)。 按照惯例,无图无真相 ? ?...绘制过程.png 2 开篇 在开始讲解之前先问一下大家,看到这样的一个动画效果,脑海中首先先闪的思路是什么,如果你的UI设计师让你去实现的话,你要怎么做呐,希望读者在思考片刻之后再继续阅读,看看我们的设计思路是不是一样...比如到各个开发群里询问有没有类似效果的demo之类的。。。 ?...其实这样的效果实现思路还是挺多的,有的是动态生成多个TextView,每次设置一个字符控制显示隐藏,有的继承自View完全自定义,从头绘制到底。...这里我的方式是继承自TextView,我们只需实现文字逐个显示的效果的逻辑就ok了,至于设置文字颜色,字体大小之类的属性我们直接使用TextView自己属性就好了,这样大大简化了我们的开发流程。

    1.7K10

    android使用TextView实现跑马灯效果

    本文实例为大家分享了android使用TextView实现跑马灯效果的具体代码,供大家参考,具体内容如下 先上效果图:此为静态图,实际动态中文字匀速向左滑动。 ?...实现步骤: 第一步:创建好布局页面 <?xml version="1.0" encoding="utf-8"?...textView = (TextView) findViewById(R.id.textview); String html = "1月25日上午,中共中央政治局在人民日报社就全媒体时代和媒体融合发展举行第十二次集体学习...; textView.setMovementMethod(LinkMovementMethod.getInstance()); // 添加手动滑动功能 textView.setEllipsize...,原因未知,注意即可 第三步:运行程序,得到效果 以上就是本文的全部内容,希望对大家的学习有所帮助。

    1.2K31

    TextView实现跑马灯效果 就这么简单!

    一、方法 这里我们用两种方法来实现跑马灯效果,虽然实质上是一种 实质就是: 1、TextView调出跑马灯效果 2、TextView获取焦点 第一种: 1、TextView调出跑马灯效果 android...这种方法如果界面上别的控件获取焦点的时候就会停止这个跑马灯效果 第二种: 1、TextView调出跑马灯效果 android:ellipsize=”marquee” 2、TextView获取焦点 public...二、代码实例 效果图 ?...marquee" android:focusable="true" android:focusableInTouchMode="true" android:text="这是一段很长的威武霸气的滚动的实现跑马灯效果的一段逼格很高的很有含义和涵养的文字...wrap_content" android:ellipsize="marquee" android:singleLine="true" android:text="这是一段很长的威武霸气的滚动的实现跑马灯效果的一段逼格很高的很有含义和涵养的文字

    1.4K30

    Android用过TextView实现跑马灯效果的示例

    跑马灯效果其实就是当文字超过TextView控件宽度的时候,使用滚动的方式显示出来: 方法1:(直接xml搞定) Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1、android...:ellipsize=”marquee”; 2、TextView必须单行显示,且内容必须超出TextView宽度; 3、TextView要获得焦点才能滚动。...xml代码如下: <TextView android:id="@+id/alarm_location" android:layout_width="20dp" android:padding...=”middle”—-省略号显示在中间 “en…dia” android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)** 方法2(自定义控件) 我看了自己以前的实现方式是这样...编写人: xiaox * @date 创建时间: 2017/1/10 * @Description 功能描述: 该类 */ public class TextViewSlide extends TextView

    1.5K20

    TextView设置跑马灯效果

    TextView设置跑马灯效果 需求 分析 实现效果 具体实现 android.xml代码 关键属性介绍 android.xml用到的background资源 .java业务代码 需求 实现视频上方文字滚动效果...https://live.csdn.net/v/embed/204299 android跑马灯效果 分析 可使用TextView实现这个跑马灯效果 实现效果 文字底部设置灰色透明背景显示...,名称以及奖励金额使用高亮色号显示 https://live.csdn.net/v/embed/204304 TextView跑马灯效果示例 具体实现 android.xml代码 <?...match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView...用到的background资源 Android实现页面渐变效果 .java业务代码 package com.fungame.activity; import android.graphics.Color

    1.1K20

    【Android】TextView的跑马灯效果

    老规矩,先上图看效果。 ? 2.gif 说明 TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢慢滑动显示的效果就叫跑马灯效果。...其实,TextView实现跑马灯效果很简单,因为官方已经实现了,你只需要通过设置几个属性即可。...实现 android:ellipsize="marquee" //设置超出显示区域的内容以跑马灯效果呈现,该值还可以设置成END, START等,就是我们常见的在末尾"..."显示。...TextView得是单行显示,还必须可以获取焦点,这样当TextView获取焦点后跑马灯效果才会启动,如最上面动图里的第二个TextView。...如果要实现这个效果,只需要继承TextView,重写几个方法就好了。

    5.1K60
    领券