天天看點

監聽

長按監聽

需要實作OnLongClickListener接口

private OnLongClickListener mLongClick = new OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {
        tvShow.setText("按鈕被長按了");
        //false表示不攔截事件
        //true表示攔截事件
        return true;
    }
};
           

注意onLongClick的傳回值,false不攔截事件,true攔截事件

通過視圖的setOnLongClickListener來設定監聽

btn1.setOnLongClickListener(mLongClick);
           

Logcat的使用

主要有5個等級的資訊列印

Log.v(tag,msg) 最全的詳細日志
Log.d(tab,msg) debug級别的列印
Log.i(tab,msg)  info級别
Log.w(tab,msg) warn級别
Log.e(tab,msg) error級别的列印
           

如果需要導出機器中的日志可以使用adb指令

adb logcat -v time>D:\log201704201032.txt
           

停止列印用Ctrl+C

EditText

android:inputType="textPassword"設定輸入類型,幫助輸入法顯示合适的鍵盤類型
android:maxLength="5" 最大的寬度有多少個字元,寬必須是wrap_content
android:ems="5"多少個字元的寬度
android:hint="@string/et_hint"輸入框提示
           

設定輸入的光标位置

et.setSelection(index); 設定輸入位置.起始光标和結束光标位置一樣
           

監聽鍵盤的Enter鍵

et.setOnEditorActionListener(new OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if(v.getId() == R.id.et1){
                Log.e("m_tag","輸入框輸入完畢");
            }
            Log.e("m_tag",event.getKeyCode()+"===="+v.getText());
            //處理Enter按下之後的邏輯
            return false;
        }
    });
           

内容的處理

Editable str = et.getText();
    str.append("2");
    str.insert(where, text)
    s.delete(start, end);
           

監聽文本變化

// 監聽輸入的内容變化情況
    et.addTextChangedListener(new TextWatcher() {

            //改變中
            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                Log.e("m_tag", "onTextChanged:" + s);
            }

            //改變前
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                Log.e("m_tag", "beforeTextChanged:" + s);
            }

            //改變後
            @Override
            public void afterTextChanged(Editable s) {
                Log.e("m_tag", "afterTextChanged:" + s);
                if (s.length() > ) {
                    s.delete(, s.length());
                }
            }
        });
           

單選按鈕和多選按鈕

android:checked="true"設定預設選中狀态 true為選中 false不選中
android:button="按鈕資源" 可以控制選擇框前面的按鈕 android:button="@null" 表示去掉前面的按鈕
           
CheckBox

    xml中:
     <CheckBox
        android:id="@+id/ch_moves"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:text="看電影" />
    java中可以監聽選擇變化
    /**
     * 選擇框變化的監聽器(單個選擇框)
     */
    private CompoundButton.OnCheckedChangeListener onCkeckChange = new 
    CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
                list.add(buttonView.getText().toString());
                setTitle(buttonView.getText() + "被選中");
            } else {
                list.remove(buttonView.getText().toString());
                setTitle(buttonView.getText() + "被取消選中");
            }
        }
    };
           
設定監聽
((CheckBox) findViewById(R.id.ch_moves)).setOnCheckedChangeListener(onCkeckChange);
           

RadioButton和RadioGroup,RadioGroup繼承自LinearLayout

<RadioGroup
        android:id="@+id/sex_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <RadioButton
            android:id="@+id/r_man"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男" />

        <RadioButton
            android:id="@+id/r_woman"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女" />
    </RadioGroup>
           

在java中可以監聽選擇變化

private RadioGroup.OnCheckedChangeListener onGroupCheckChange = new 
    RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            RadioButton btn = (RadioButton) findViewById(checkedId);
            setTitle("選中了:"+btn.getText());
        }
    };
           
sexGroup = (RadioGroup) findViewById(R.id.sex_group);
    sexGroup.setOnCheckedChangeListener(onGroupCheckChange);
擷取結果

    int id = sexGroup.getCheckedRadioButtonId();
清除所有的選中狀态

    sexGroup.clearCheck();