我遇到了在android中限制edittext長度的問題。除了刪除郵件時,一切都完美。 我的編輯文本控件的最大長度爲16個字符,它將限制它識別,顯示和閱讀前16個字符,但是當我繼續輸入時,它會在後臺某處存儲文本,如果我想刪除文本,它不會啓動從第16個字符後退,但從我輸入的最後一箇中刪除。 請參閱下面的代碼。Android限制edittext長度
我甚至試圖添加TextChangedListener它不會觸發16個字符輸入,因爲沒有任何操作。
我使用的Nexus 7測試這個功能
佈局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@drawable/background"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/send_new_message_lblTo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/send_new_message_to"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/send_new_message_lblToValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/send_new_message_lblTo"
android:ems="10"
android:textAppearance="?android:attr/textAppearanceLarge" >
</TextView>
<EditText
android:id="@+id/send_new_message_txtMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/send_new_message_lblToValue"
android:layout_marginTop="10dp"
android:ems="10"
android:hint="@string/send_new_message_hint"
android:inputType="textMultiLine"
android:lines="2"
android:maxLength="16"
android:scrollbarStyle="outsideOverlay" />
<Button
android:id="@+id/send_new_message_btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/send_new_message_txtMessage"
android:layout_marginTop="10dp"
android:text="@string/send" />
</RelativeLayout>
活動
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class NewMessageSendActivity{
private TextView to;
private EditText message;
private Button send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.send_message);
getViewInstances();
setControlActions();
}
private void getViewInstances() {
to = (TextView) findViewById(R.id.send_new_message_lblToValue);
message = (EditText) findViewById(R.id.send_new_message_txtMessage);
send = (Button) findViewById(R.id.send_new_message_btnSend);
to.setText(AppSettings.getInstance().getSelectedDevice().toString());
}
private void setControlActions() {
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String smsMessage = message.getText().toString();
Toast.makeText(this, smsMessage, Toast.LENGTH_SHORT).show();
}
});
}
}
試試這個:http://androidblogger.blogspot.in/2009/01/numeric-edittext-and-edittext-with-max.html –
爲什麼你只爲16個字符指定一個2行'EditText'? – Raffaele
@Raffaele 2行EditText在前一段時間被指定,並保持這種方式,但我已將它設置爲1行,但它仍然不起作用 – Damir