show code block

2017年8月14日 星期一

Android元件 (圖像視圖元件)— 幾個常被忽略的東西editText、ToggleButton 影藏顯示密碼轉換、RadioGroup、ImageView ContentDescription作用

實作:

1、editText可以設定你要叫出來的軟鍵盤功能為何
<EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="hint"
        android:inputType="phone" />
 

其中inputType為控制方法
這裡有幾個好用的值

phone 只能輸入號碼
date 只能輸入數字和斜線/
textPassword  提供文字輸入鍵盤,並影藏內容
textCapSentences  讓句子的第一個單字以大寫開頭
textAutoCorrect  自動改正輸入的文字


2、ToggleButton 我用順便用來影藏和顯示editText的顯示和影藏密碼
  toggle_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (toggle_btn.isChecked()) {
                    editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//顯示密碼
                } else {
                    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//影藏
                }
            }
        });
 


3、RadioGroup使用
在被呼叫的時候如果沒做選擇
 int id = radioGroup.getCheckedRadioButtonId();
                if (id == -1) {
                    Toast.makeText(MainActivity.this, "您未做任何選擇。", Toast.LENGTH_SHORT).show();
                } else {
                    RadioButton radiobutton = (RadioButton) findViewById(id);
                    Toast.makeText(MainActivity.this, "你選擇了:" + radiobutton.getText().toString(), Toast.LENGTH_SHORT).show();
                }
 



4、ImageView中的ContentDescription
來源:http://www.cnblogs.com/baiyan1/archive/2012/11/27/2790094.html

在写Android的XML布局文件时,在ImageView或ImageButton中经常会碰到一个提示:
Missing contentDescription attribute on image.

这个属性是做什么的呢?

其实这个属性是方便一些生理功能有缺陷的人使用应用程序的。比如我们有一个ImageView里面放置一张颜色复杂的图片,可能一些色弱色盲的人,分不清这张图片中画的是什么东西。如果用户安装了辅助浏览工具比如TalkBack,TalkBack就会大声朗读出用户目前正在浏览的内容。TextView控件TalkBack可以直接读出里面的内容,但是ImageView TalkBack就只能去读contentDescription的值,告诉用户这个图片到底是什么。

原文在Android官网:


5、一行TextView內塞太多東西的省略文字
在xml中:
android:ellipsize="end"     省略號在結尾
android:ellipsize="start"   省略號在開頭
android:ellipsize="middle"   省略號在中間
android:ellipsize="marquee"  跑馬燈
最後TextView顯示行數的限制:
android:singleline="true"或者android:lines="1"



全部程式碼:


MainActivity畫面佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.hello.kaiser.ui.MainActivity">

    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="hint"
        android:inputType="" />

    <ToggleButton
        android:id="@+id/toggle_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="10dp"
        android:onClick="onToggleClicked"
        android:textOff="測試隱藏狀態"
        android:textOn="測試開啟狀態" />

    <Switch
        android:id="@+id/switch_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp" />

    <CheckBox
        android:id="@+id/checkbox_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="CheckBoxClick" />

    <CheckBox
        android:id="@+id/checkbox_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="CheckBoxClick" />

    <RadioGroup
        android:id="@+id/radio_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:orientation="vertical">

        <RadioButton
            android:id="@+id/radio_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="groupButton"
            android:text="MILK" />

        <RadioButton
            android:id="@+id/radio_two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="groupButton"
            android:text="COFFEE" />
    </RadioGroup>

    <Button
        android:text="最後選擇確認"
        android:id="@+id/checkRadioButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


    <ImageView
        android:id="@+id/image_view"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="10dp"
        android:contentDescription="This is android logo"
        android:src="@drawable/android_photo" />
</LinearLayout>

 


MainActivity.java
public class MainActivity extends AppCompatActivity {

    private EditText editText;
    private ToggleButton toggle_btn;
    private Switch switch_btn;
    private RadioGroup radioGroup;
    private ImageView imageview;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setInit();
        setView();
        setListener();
    }

    private void setInit() {
        editText = (EditText) findViewById(R.id.edit_text);
        toggle_btn = (ToggleButton) findViewById(R.id.toggle_btn);
        switch_btn = (Switch) findViewById(R.id.switch_btn);
        radioGroup = (RadioGroup) findViewById(R.id.radio_group);
        imageview = (ImageView) findViewById(R.id.image_view);
        button = (Button) findViewById(R.id.checkRadioButton);
    }

    private void setView() {
        toggle_btn.setChecked(false);//設定一開始是關閉狀態
        int image = R.drawable.android_photo;
        String description = "This is logo";
        imageview.setImageResource(image);
        imageview.setContentDescription(description);

    }

    private void setListener() {
        toggle_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (toggle_btn.isChecked()) {
                    editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//顯示密碼
                } else {
                    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//影藏
                }
            }
        });
        switch_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (switch_btn.isChecked()) {
                    Toast.makeText(MainActivity.this, "開啟", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "關閉", Toast.LENGTH_SHORT).show();
                }
            }
        });
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int id = radioGroup.getCheckedRadioButtonId();
                if (id == -1) {
                    Toast.makeText(MainActivity.this, "您未做任何選擇。", Toast.LENGTH_SHORT).show();
                } else {
                    RadioButton radiobutton = (RadioButton) findViewById(id);
                    Toast.makeText(MainActivity.this, "你選擇了:" + radiobutton.getText().toString(), Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    public void CheckBoxClick(View view) {
        boolean checked = ((CheckBox) view).isChecked();
        switch (view.getId()) {
            case R.id.checkbox_one:
                if (checked)
                    Toast.makeText(this, "選擇牛奶", Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(this, "unCheck牛奶", Toast.LENGTH_SHORT).show();
                break;
            case R.id.checkbox_two:
                if (checked)
                    Toast.makeText(this, "選擇咖啡", Toast.LENGTH_SHORT).show();
                else
                    Toast.makeText(this, "unCheck coffee", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }

    public void groupButton(View view) {
        int id = radioGroup.getCheckedRadioButtonId();
        switch (id) {
            case R.id.radio_one:
                Toast.makeText(this, "選milk", Toast.LENGTH_SHORT).show();
                break;
            case R.id.radio_two:
                Toast.makeText(this, "選coffee", Toast.LENGTH_SHORT).show();
                break;

        }
    }


}

 




就不提供Demo了,就如同上面一樣,複製貼上就可看到demo

沒有留言:

張貼留言

協程(coroutine) - 協程為什麼要學它?

 Coroutine 協程 再強調一次 協程就是由kotlin官方所提供的線程api //Thread Thread { }.start() //Executor val execu...