如何在editText框的右下角显示编辑文本字符限制?下面的例子

Posted

技术标签:

【中文标题】如何在editText框的右下角显示编辑文本字符限制?下面的例子【英文标题】:How show editText character limit in buttom right corner of editText box?? Example below 【发布时间】:2021-03-30 16:46:53 【问题描述】:

上图显示了一个编辑文本,它的文本限制显示在右下角,最多 250 个字符。随着用户在 editText 中键入字符,“250”会减少。

我一直在尝试在我的编辑文本中实现这一点,但这有点具有挑战性。我尝试了各种东西。 只是为了让你知道我正在使用一个 alertDialog,它里面有 editText。然后 alertDialog 会显示一个 xml,其中包含 editText 属性。

感谢您的帮助!!!!

【问题讨论】:

【参考方案1】:

使用 android 材料非常容易。我希望它的帮助:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/textField"
    android:layout_
    android:layout_
    app:counterEnabled="true" --this makes counter enable
    app:counterMaxLength="20" -- this is the limittion 
    android:hint="@string/label">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_
        android:layout_
    />

</com.google.android.material.textfield.TextInputLayout>

或者如果你只想要一个 EditeText,你可以使用 TextWatcher:

private TextView mTextView;
private EditText mEditText;
mTextView.setText("250");
private final TextWatcher mTextEditorWatcher = new TextWatcher() 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) 
        

        public void onTextChanged(CharSequence s, int start, int before, int count) 
           //This sets a textview to the current length
           mTextView.setText(String.valueOf(250-s.length()));
        

        public void afterTextChanged(Editable s) 
        
; 


mEditText.addTextChangedListener(mTextEditorWatcher);

【讨论】:

您好,感谢您的帮助。我已经尝试过您的解决方案,但它似乎不适用于仅 EditText。您是否有适用于我当前 XML 代码的代码。我已经用我当前的 XML 更新了这个问题。我曾尝试使用材料设计 editText,但我得到了我不想要的结果。谢谢 @EdwardJames 您可以将编辑文本放入 TextInputLayout。但我根据您的需要更新了我的答案 NVM,您的解决方案效果更好,感谢您的帮助!!!!【参考方案2】:
//xml 

     <EditText
                    android:id="@+id/et_comment"
                    style="@style/BusinessEditText"
                    android:layout_
                    android:layout_
                    android:layout_marginTop="@dimen/margin_10"
                    android:background="@drawable/bg_border_comment"
                    android:gravity="top"
                    android:hint="Type here - Include your Order ID if it is connected to your order."
                    android:maxLength="500"
                    android:textColor="@color/black"
                    android:textColorHint="@color/text_gray"
                    android:textSize="16sp" />
    
                <TextView
                    android:id="@+id/tv_count"
                    android:layout_
                    android:layout_
                    android:text="0/500"
                    android:layout_gravity="end" />



// inside java class            
        
        @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) 
        
            
        
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) 
        
                if (count == 0) 
                    currentLine = currentLine - before;
                 else 
                    currentLine = currentLine + count;
                
                Log.d("new line ", currentLine + "");
        
                dataBiding.tvCount.setText(currentLine+"/500");
        
        
            
        
            @Override
            public void afterTextChanged(Editable s) 
        
            

【讨论】:

以上是关于如何在editText框的右下角显示编辑文本字符限制?下面的例子的主要内容,如果未能解决你的问题,请参考以下文章

Android EditText的光标的显示和隐藏

android 文本框和编辑框的基本属性

windows程序单行文本编辑框的添加

PPT中文本框的大小及位置

在 GridView 中编辑行时如何设置文本框的宽度?

单击EditText时如何隐藏键盘不显示