Android开发笔记3之控件

一:编辑框

在res文件夹下的layout的文件夹的xml文件

image image 这样在xml中我们就声明了两个控件,一个EditText和一个TextView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="24dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

</RelativeLayout>

并且我们将为EditText控件添加事件监听setOnKeyListener,并实现了onKey方法--在这个项目中也就是用户在按键是变回触发这个事件,从而可以通过getText()方法来获取用户输入的内容,当然,用户在没有输入的默认情况下,编辑框EditText默认显示“输入账号”,实现这个功能的方法为Edit.SetHint(“请输入账号!”)或者在xml布局上写上“android:hit=”请输入账号!””,

代码为

package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {
    private TextView m_texTextView;
    private EditText m_EditText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        m_texTextView=(TextView)findViewById(R.id.textView1);
        m_EditText=(EditText)findViewById(R.id.editText1);
        m_EditText.setHint("请输入账号:");
        m_EditText.setOnKeyListener(new EditText.OnKeyListener(){
            @Override
            public boolean onKey(View arg0,int arg1,KeyEvent arg2){
                m_texTextView.setText("文本框中的内容是:"+m_EditText.getText().toString());
                return false;
            }
        });
    }


    @Override
    public 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;
    }
    
}

二:Spinner控件

1.在Activity中自定数据的绑定方式

private static final String[] m={"A型","B型","O型","AB型","其他"}; 
    private ArrayAdapter<String> adapter;

在Oncrete方法中做各种实例化spinner

     setContentView(R.layout.activity_main);
        Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
        adapter=new ArrayAdapter<String>(this,  android.R.layout.simple_spinner_item, m);
        adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);  
        spinner.setAdapter(adapter);  
        spinner.setOnItemSelectedListener(new SpinnerSelectedListener());
        spinner.setVisibility(View.VISIBLE);

实现事件的注册

class SpinnerSelectedListener  implements OnItemSelectedListener{
        
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
              Toast.makeText(MainActivity.this, "你的血型是:"+m[arg2], 1).show();
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            
        }
    }

2.在vlues文件夹中定义arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="plantes">
        <item>NOKIA</item>
        <item>MOTO</item>
        <item>HTC</item>
        <item>LG</item>
        <item>其他</item>
    </string-array>
</resources>
private ArrayAdapter adapter2;
rotected void onCreate(Bundle savedInstanceState) {
   adapter2 = ArrayAdapter.createFromResource(this, R.array.plantes, android.R.layout.simple_spinner_item);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);  
        spinner1.setAdapter(adapter2);  
        spinner1.setOnItemSelectedListener(new SpinnerXMLSelectedListener());  
}
class SpinnerXMLSelectedListener  implements OnItemSelectedListener{
        
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
             Toast.makeText(MainActivity.this, "你使用什么样的手机:"+adapter2.getItem(arg2), 1).show();
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            
        }
    }

注意两种方法分别给adater绑定数据的不同,而且simper_spinner_dropdown_item系统默认的layout方式

三:SeekBar

SeekBar拖动条:听歌、看电影,快进或者退回某一时间或者调节音量大小

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
     android:orientation="vertical"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent">  
       
     <SeekBar  
     android:id="@+id/seekbar"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     android:max="100"  
     android:progress="50"  
     android:secondaryProgress="75" />  
       
     <TextView   
     android:id="@+id/info01"   
     android:layout_width="match_parent"   
     android:layout_height="wrap_content" />  
       
     <TextView    
     android:id="@+id/info02"  
     android:layout_width="match_parent"   
     android:layout_height="wrap_content" />  
       
 </LinearLayout>
//注意同时从MainActivity类自Activity继承与实现OnSeekBarChangeListener接口  
public class MainActivity extends Activity implements OnSeekBarChangeListener  
{  
    //声明变量  
    private SeekBar sbVolumer=null;  
    private TextView tvinfo01=null;  
    private TextView tvInfo02=null;  
    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        //获得控件  
        sbVolumer = (SeekBar) findViewById(R.id.seekbar);  
        sbVolumer.setOnSeekBarChangeListener(this);  
        tvinfo01 = (TextView) findViewById(R.id.info01);  
        tvInfo02 = (TextView) findViewById(R.id.info02);  
    }  
      
    //SeekBar数值改变事件  
    @Override  
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)  
    {  
        tvinfo01.setText("音量当前值:"+progress);  
    }  
      
    //SeekBar开始拖动事件  
    @Override  
    public void onStartTrackingTouch(SeekBar arg0)  
    {  
        tvInfo02.setText("音量正在调解");  
    }  
      
    //SeekBar停止拖动事件  
    @Override  
    public void onStopTrackingTouch(SeekBar arg0)  
    {  
        tvInfo02.setText("音量停止调解");  
    }  
}

注意同时从MainActivity类自Activity继承与实现OnSeekBarChangeListener接口

四、RatingBar

public class MainActivity extends Activity {
    private RatingBar rbSore=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rbSore=(RatingBar)this.findViewById(R.id.ratingBar1);
        rbSore.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
            
            @Override
            public void onRatingChanged(RatingBar arg0, float arg1, boolean arg2) {
                // TODO Auto-generated method stub
                 Toast.makeText(getApplication(), "rating:"+String.valueOf(arg1),Toast.LENGTH_SHORT).show(); 
            }
        });
    }


    @Override
    public 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;
    }
    
}

RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定

原文地址:https://www.cnblogs.com/ilooking/p/4261986.html