Button講解:一、在我們實際的使用button的時候經常會對button不同狀態會有不同的顯示,在講解Button前,首先對drawable下麵的statelistdrawable的相關知識講一下,StateListDrawable在一中drawable下麵的一種資源文件,它的關鍵節點selec...
Button講解:
一、在我們實際的使用button的時候經常會對button不同狀態會有不同的顯示,在講解Button前,首先對drawable下麵的statelistdrawable的相關知識講一下,StateListDrawable在一中drawable下麵的一種資源文件,它的關鍵節點selector,我只需要在設置button屬性background的時候@drawable/selector_name就可以了,這時就會根據不同狀態現在button的變化,當然這樣StateListDrawable也適合其他一些控制項,主要還是用於Button。
StateListDrawable我們可能用到的屬性:
- drawable:引用的Drawable點陣圖,我們可以把他放到最前面,就表示組件的正常狀態~
- state_focused:是否獲得焦點
- state_window_focused:是否獲得視窗焦點
- state_enabled:控制項是否可用
- state_checkable:控制項可否被勾選,eg:checkbox
- state_checked:控制項是否被勾選
- state_selected:控制項是否被選擇,針對有滾輪的情況
- state_pressed:控制項是否被按下
- state_active:控制項是否處於活動狀態,eg:slidingTab
- state_single:控制項包含多個子控制項時,確定是否只顯示一個子控制項
- state_first:控制項包含多個子控制項時,確定第一個子控制項是否處於顯示狀態
- state_middle:控制項包含多個子控制項時,確定中間一個子控制項是否處於顯示狀態
- state_last:控制項包含多個子控制項時,確定最後一個子控制項是否處於顯示狀態
二:實例一:實現按鈕按下效果和按鈕的圓角
Java文件
package com.example.test3; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { private Button btn1; private Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.btn_one); btn2 = (Button) findViewById(R.id.btn_two); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (btn2.getText().toString().endsWith("按鈕不可用")){ btn1.setEnabled(false); btn2.setText("按鈕可用"); }else{ btn1.setEnabled(true); btn2.setText("按鈕不可用"); } } }); } }
StateListDrawable文件:其中關於shape的使用前面已經講過
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!--按下按鈕--> <item android:state_pressed="true"> <shape> <stroke android:width="5px" android:color="@android:color/holo_red_light"/> <corners android:radius="15dp"/> <solid android:color="@android:color/holo_red_light"/> </shape> </item> <!-- 按鈕不可用--> <item android:state_enabled="false"> <shape> <stroke android:width="5px" android:color="@android:color/darker_gray"/> <corners android:radius="15dp"/> <solid android:color="@android:color/darker_gray"/> </shape> </item> <!--其他狀況--> <item> <shape> <stroke android:width="5px" android:color="@android:color/holo_blue_bright"/> <corners android:radius="15dp"/> <solid android:color="@android:color/holo_blue_bright"/> </shape> </item> </selector>
佈局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffffff"> <Button android:id="@+id/btn_one" android:layout_width="match_parent" android:layout_height="70dp" android:background="@drawable/btn_bg1" android:text="按鈕" android:textStyle="bold" android:textSize="24sp"/> <Button android:id="@+id/btn_two" android:layout_width="match_parent" android:layout_height="80dp" android:layout_marginTop="10dp" android:text="按鈕不可用" android:textSize="24sp" android:textStyle="bold" /> </LinearLayout>
效果圖: