EditText限制输入的字符数并弹出Toast提示字数已达上限

本文介绍了如何在Android应用中使用EditText组件限制用户输入的字符数,并在达到最大输入限制时弹出Toast提示。通过布局设计和代码实现,动态更新输入框下方的字数显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图 : 这是一个输入框下边的0/200要根据用户输入的字数动态改变

二 、布局 

            <LinearLayout 
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="145dp">
                <EditText
                    android:id="@+id/et_dynamic_text"
                    android:hint="发布短视频将获得更多邻里关注"
                    android:gravity="top|left"
                    android:textSize="14sp"
                    android:textColorHint="#969696"
                    android:padding="10dp"
                    android:layout_width="match_parent"
                    android:layout_height="120dp" />
                <TextView
                    android:id="@+id/tv_input_text_num"
                    android:text="0/200"
                    android:textSize="14sp"
                    android:paddingRight="12dp"
                    android:textColorHint="#969696" 
                    android:layout_gravity="end"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </LinearLayout>

代码 

public class MainActivity extends Activity implements TextWatcher {

    private EditText etDynamicText;//输入框
    private TextView tvShowTextNum;//显示还剩多少字数的文本
    private CharSequence temp;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initView();
    }

    //初始化控件
    private void initView() {
        etDynamicText = findViewById(R.id.et_dynamic_text);
        etDynamicText.addTextChangedListener(this);
        tvShowTextNum = findViewById(R.id.tv_input_text_num);
    }


    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        temp = s ;
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        tvShowTextNum.setText(temp.length()+"/200");
        if (temp.length() > 200) {
            ToastUtils.show("最多输入200字");
            etDynamicText.setText(s.toString().substring(0,200));//截取输入的字符砖,只显示0-200位的字符
            etDynamicText.setSelection(200);//将光标追踪到内容的最后
        }
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值