【Android】下拉式清單、拖動條、星級評等條與標籤文本的觸摸事件

來源:互聯網
上載者:User

標籤: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】下拉式清單、拖動條、星級評等條與標籤文本的觸摸事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.