我有这个EditText,限制为150个字符:
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
android:layout_marginBottom="50dp"
android:padding="30dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:maxLength="150"
android:gravity="top|left"
android:lineSpacingMultiplier="1.8"
android:inputType="textMultiLine|textCapSentences" >
</EditText>
的TextView:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
/>
NewActivity:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
public class NewActivity extends Activity {
private TextView textView1;
private EditText editText1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_text);
final ImageButton a = (ImageButton) findViewById(R.id.imageBack);
a.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Animation anim = AnimationUtils.loadAnimation(NewActivity.this, R.anim.animation);
a.startAnimation(anim);
Intent intent = new Intent(NewActivity.this,MainActivity.class);
startActivity(intent);
editText1.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int aft)
{
}
@Override
public void afterTextChanged(Editable s)
{
// this will show characters remaining
textView1.setText(150 - s.toString().length() + "/150");
}
});
}
});
}}
我想在页面的右上角创建一个小方框,在那里你可以看到剩下多少个字符,例如132/150,我试过在stackoverflow上查看其他解决方案,但我无法得到它们工作。
答案 0 :(得分:10)
你可以这样做
mEditText.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int aft
{
}
@Override
public void afterTextChanged(Editable s)
{
// this will show characters remaining
countTextView.setText(150 - s.toString().length() + "/150");
}
});
答案 1 :(得分:1)
您可以使用TextWatcher查看文本何时更改
private TextView mTextView;
private EditText mEditText;
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(s.length()));
}
public void afterTextChanged(Editable s) {
}
};
您可以使用
为edittext设置TextWatchermEditText.addTextChangedListener(mTextEditorWatcher);
答案 2 :(得分:1)
以编程方式执行..
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
int length = s.length();
// set this length/maxlength to the textview at the top left
// corner
textView.setText(""+length+ "/" +max);//which is placed at the top right corner
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
答案 3 :(得分:0)
- 保留TextWatcher并跟踪输入文本的长度。
- 执行MAX_LENGTH - yourTextwatcherString.length;
- 根据计时器/或甚至按键,继续更新RHS顶部的视图,您的愿望(有几种方法可以做到这一点)。在更新视图之前,请检查旧长度和新长度是否相同。
醇>