EditText具有默认值

时间:2015-01-30 06:38:56

标签: android android-layout android-activity

我使用bootstrap和.input-group-addon将元素前置或附加到单个表单元素,如TextArea输入类型的表单。 前置简单意味着它显示它包含禁止用户编辑的值。

如何在我的andriod应用中执行此操作?它与我的XML或什么? 请帮忙......

2 个答案:

答案 0 :(得分:5)

我认为以下代码可以帮助您这样做。

解决方案1 ​​

TextView只会显示前缀文字,EditText可以由用户选择。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@android:color/white" >

    <TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="http://"
        android:textColor="@android:color/darker_gray" />

    <EditText 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:text="www.google.com"
        />
</LinearLayout>

在上面的布局中,您会看到TextView包含您的默认文字,但用户只能在EditText中书写。所以用户不会对这种技巧有所了解。

解决方案2

final EditText edt = (EditText) findViewById(R.id.editText1);

edt.setText("http://");
Selection.setSelection(edt.getText(), edt.getText().length());


edt.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        if(!s.toString().contains("http://")){
            edt.setText("http://");
            Selection.setSelection(edt.getText(), edt.getText().length());
        }
    }
});

此解决方案不允许用户从其EditText输入中删除“http://”。

答案 1 :(得分:3)

EditText扩展TextView扩展View类。 View.java类有方法setText,它几​​乎适用于扩展View.java的每个视图。

<强> Conclustion

EditText.setText("your Text here"); //set default value

EditText.setHint("your Text here"); //set hint

在Xml中

 android:text="@string/yourStringText"