一、效果图 : 这是一个输入框下边的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);//将光标追踪到内容的最后
}
}
}