Android控件属性大全

本文详细介绍了Android中EditText的滚动设置、文字颜色变化、文本监听及在输入法中的搜索按钮配置。接着讨论了Dialog的消失事件及外部点击响应,并讲解了如何设置RelativeLayout的对齐方式。此外,还提到了一个实用属性,当布局内包含文本控件时,如何确保点击任何位置都能触发布局的点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EditText

// 获取光标当前位置
 return dia_et_pwd.getSelectionStart();
// 获取文本框的内容
return dia_et_pwd.getText().toString();
// 清除文本框中的内容
dia_et_pwd.getText().clear();
// 删除指定位置的字符
dia_et_pwd.getText().delete(index - 1, index);
// 设置光标位置
dia_et_pwd.setSelection(index);

设置文本框可滚动

<EditText android:id="@+id/displayText"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:singleLine="false"
        android:scrollbars="vertical"
        android:editable="false"
        android:textSize="12px"
        android:focusable="false"
    />

java代码

EditText displayText = null;
displayText = (EditText)findViewById(R.id.displayText);        displayText.setMovementMethod(ScrollingMovementMethod.getInstance());
displayText.setSelection(displayText.getText().length(),                                                                                     displayText.getText().length());
displayText.getText().append("msg");

显示不同颜色的文字

textView.setText(Html.fromHtml("测试<font color=red >文字</font>"));
// 往文本框中添加内容
    public void addString(String sequence) {
        int index = getEditSelection();// 光标的位置
        if (index < 0 || index >= getEditTextViewString().length()) {
            dia_et_pwd.append(sequence);
            Log.i(TAG, "str===" + str);
        } else {
            dia_et_pwd.getEditableText().insert(index, sequence);// 光标所在位置插入文字
        }
    }

文本监听

class EditChangedListener implements TextWatcher {  
       private CharSequence temp;//监听前的文本  
       private int editStart;//光标开始位置  
       private int editEnd;//光标结束位置  
       private final int charMaxNum = 10;  

       @Override  
       public void beforeTextChanged(CharSequence s, int start, int count, int after) {  
           if (DEBUG)  
               Log.i(TAG, "输入文本之前的状态");  
           temp = s;  
       }  

       @Override  
       public void onTextChanged(CharSequence s, int start, int before, int count) {  
           if (DEBUG)  
               Log.i(TAG, "输入文字中的状态,count是一次性输入字符数");  
           mTvAvailableCharNum.setText("还能输入" + (charMaxNum - s.length()) + "字符");  

       }  

       @Override  
       public void afterTextChanged(Editable s) {  
           if (DEBUG)  
               Log.i(TAG, "输入文字后的状态");  
           /** 得到光标开始和结束位置 ,超过最大数后记录刚超出的数字索引进行控制 */  
           editStart = mEditTextMsg.getSelectionStart();  
           editEnd = mEditTextMsg.getSelectionEnd();  
           if (temp.length() > charMaxNum) {  
               Toast.makeText(getApplicationContext(), "你输入的字数已经超过了限制!", Toast.LENGTH_LONG).show();  
               s.delete(editStart - 1, editEnd);  
               int tempSelection = editStart;  
               mEditTextMsg.setText(s);  
               mEditTextMsg.setSelection(tempSelection);  
           }  

       }  
   };  

设置监听

mEditTextMsg.addTextChangedListener(new EditChangedListener());  

在输入法中显示搜索的按钮并监听

Dialog

设置对话框消失的事件

final Dialog_Main alertDialog = new Dialog_Main(getActivity(), R.style.my_dialog_style, dialog_view);
        alertDialog.setOnCancelListener(new OnCancelListener() {

            @Override
            public void onCancel(DialogInterface dialog) {
                ViewUtil.toast(appContext, "121212");
            }
        });

设置点击对话框外部是否消失
setFinishOnTouchOutside(true);//

布局

RelativeLayout
java代码设置布局对齐方式

RelativeLayout.LayoutParams labelParams = (LayoutParams) label.getLayoutParams();
labelParams.addRule(RelativeLayout.CENTER_HORIZONTAL, 0); // 取消水平居中
labelParams.addRule(RelativeLayout.BELOW, 0); // 取消显示到logo的下方
labelParams.addRule(RelativeLayout.RIGHT_OF, R.id.logo); // 显示到Logo的右方
labelParams.addRule(RelativeLayout.CENTER_VERTICAL); // 垂直居中
label.setLayoutParams(labelParams);                           

实用属性

android:duplicateParentState="true"
使用场景,布局中有一个文本控件,在布局内的范围点击都要触发布局的点击事件(包含selector的效果),但是你会发现点击布局中的文本后并没有出发布局的事件。这时就是需要设置duplicateParentState
属性。true就是父控件响应点击事件。

<FrameLayout
    android:id="@+id/fx_record_right"
    android:layout_width="wrap_content"
    android:background="@drawable/fl_selector"
    android:clickable="true"
    android:gravity="center"
    android:layout_height="wrap_content">

                <TextView
                    android:layout_width="wrap_content"
                    android:duplicateParentState="true"
                    android:layout_height="wrap_content"
                    android:paddingRight="5dp"
                    android:layout_gravity="center_horizontal|center_vertical"
                    android:textSize="14sp" />
</FrameLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值