標籤:android 布局 星級評等條 下拉式清單 拖動條
下拉式清單、拖動條與星級評等條都是Android中的一些基本組件。
寫一個小小的程式,來說明其用法。
如:
當下拉式清單有值選定之後,則彈出相應的提示資訊,哪個值被選擇。星際評分條也一樣,擷取使用者選擇的星數。
標籤文本被觸摸則顯示其被觸摸。
滑動條,在拖動的時候,則在標籤文本顯示其值。因為,如果用彈出訊息顯示其滑動值,很不順暢。
首先,把res\values\strings.xml,修改成如下代碼:
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">進度條及其他組件</string> <string name="action_settings">Settings</string> <string name="TextView1">下拉式清單:</string> <string name="TextView2">拖動條:</string> <string name="TextView3">星級評等條:</string></resources>
之後,在res\values中建立一個array.xml檔案,寫入如下代碼,這個檔案是用來填充下拉式清單的選項的:
<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="spinner1"> <item>選項1</item> <item>選項2</item> <item>選項3</item> </string-array></resources>
然後,在res\layout\activity_main.xml中進行布局,布局思想如下:
因此activity_main.xml的代碼如下,給要操作的組件賦予id:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/TextView1" /> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/spinner1" /> </LinearLayout> <TextView android:id="@+id/TextView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/TextView2" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/TextView3" /> <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="5" /></LinearLayout>
其中星級評等條的屬性中numStars為最大星數。
之後在Mainactivity.java中給各個組件添加監聽器:
package com.progresscomponent;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.RatingBar;import android.widget.RatingBar.OnRatingBarChangeListener;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.Spinner;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {private Spinner spinner1;private TextView textView2;private SeekBar seekBar1;private RatingBar ratingBar1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//擷取各個組件spinner1=(Spinner)findViewById(R.id.spinner1);textView2 = (TextView) findViewById(R.id.TextView2);seekBar1=(SeekBar)findViewById(R.id.seekBar1);ratingBar1=(RatingBar)findViewById(R.id.ratingBar1);//下拉式清單的改變的監聽器spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View arg1,int pos, long arg3) {String result=parent.getItemAtPosition(pos).toString();Toast.makeText(MainActivity.this, "下拉式清單被更改,"+result+"被選擇",Toast.LENGTH_LONG).show();}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {// TODO Auto-generated method stub}});//標籤文本被觸摸的監聽器textView2.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View arg0, MotionEvent arg1) {Toast.makeText(MainActivity.this, "“拖動條”這幾個字被觸摸!",Toast.LENGTH_LONG).show();return false;}});//滑動條被拖動的監聽器seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {@Overridepublic void onStopTrackingTouch(SeekBar arg0) {// TODO Auto-generated method stub}@Overridepublic void onStartTrackingTouch(SeekBar arg0) {// TODO Auto-generated method stub}@Overridepublic void onProgressChanged(SeekBar arg0, int result, boolean arg2) {// TODO Auto-generated method stubtextView2.setText( "滑動條,當前值為:"+result);}});//星級評等條被打分的監聽器ratingBar1.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {@Overridepublic void onRatingChanged(RatingBar arg0, float result, boolean arg2) {Toast.makeText(MainActivity.this, "星級評等條被評分,值為:"+result,Toast.LENGTH_LONG).show();}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
【Android】下拉式清單、拖動條、星級評等條與標籤文本的觸摸事件