• 登陆界面综合实例+spinner下拉列表框详解


    image

    image

    点击确定:

    image

    点击修改:

    image

    想到Spinner下拉按钮可以通过两种方法生成

    方法一:

    1、在array数组里面定义数组

    代码如下:

    <resources>
        <st
    <?xml version="1.0" encoding="utf-8"?>
    ring-array name="balls">
            <item >篮球</item>
            <item >足球</item>
            <item >网球</item>
            <item >排球</item>
        </string-array>
        
            <string-array name="citys">
            <item >北京</item>
            <item >上海</item>
            <item >大连</item>
            <item >合肥</item>
             <item >安徽</item>
        </string-array>
        
    </resources>

    2、在spinner布局下,将数组应用过来

         代码如下:

       <Spinner
           android:id="@+id/spinner"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_toRightOf="@+id/city"
           android:entries="@array/citys"
           android:prompt="@string/city" />

    3、再在.java中定义声明,然后用其本身的方法获得其值

    代码如下:

    private Spinner citySpinner;
    citySpinner = (Spinner)findViewById(R.id.spinner);
     
        //从spinner 下拉框中获取选择的值
    protected String getCitys() {
            // TODO Auto-generated method stub
         return citySpinner.getSelectedItem().toString();
        }

    方法二:

    1、在Spinner的布局文件里面先定义,但不要有值。

    <Spinner
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/city"
    android:id="@+id/cityItems">
    </Spinner>

    2、定义数组和Spinner

    private static final String[] cities = { "北京", "上海", "广州", "郑州" };

    private Spinner cityItems;

    3、将定义的Spinne与布局文件中的id挂钩

    cityItems = (Spinner) findViewById(R.id.cityItems);

    4、创建一个数组型适配器并将cities中的数据与系统默认的spinner布局文件中的元素挂钩

    ArrayAdapter<String> adpter = new ArrayAdapter<String>(
    LoginActivity.this,android.R.layout.simple_spinner_item,cities);

    5、将此适配器adpter设置为setdropdownviewresource的模式

    (Sets the layout resource to create the drop down views)

    adpter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    6、将文件中定义的Spinner与适配器建立联系

    cityItems.setAdapter(adpter);

      private    String[]   cityItems;
    setContentView(R.layout.main);
            
    Spinner spinner = (Spinner) findViewById(R.id.cityItems);
            
    cityItems = getResources().getStringArray(R.array.citys);
    ArrayAdapter< String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,cityItems);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    Toast.makeText(MainActivity.this, "您选择的是"+ spinner.getSelectedItem().toString(), 2000).show();

    废话不多说,直接贴源码

    String.xml当中的源码

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
     
        <string name="app_name">Login</string>
        <string name="action_settings">Settings</string>
        <string name="hello_world">Hello world!</string>
        <string name="user">用户名:</string>
        <string name="secret">密码:</string>
        <string name="age">年龄:</string>
        <string name="sex">性别:</string>
        <string name="hobby">喜好:</string>
        <string name="woman"></string>
        <string name="man"></string>
        <string name="city">城市:</string>
        <string name="football">足球</string>
        <string name="basketball">篮球</string>
        <string name="pingpong">乒乓球</string>
        <string name="ski">滑冰</string>
        <string name="submit">注册</string>
     
    </resources>

    Arrays.xml当中的源码:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
            <string-array name="citys">
            <item >北京</item>
            <item >上海</item>
            <item >大连</item>
            <item >合肥</item>
             <item >安徽</item>
        </string-array>
    </resources>

    Dimen.xml当中的源码:(主要用于规定字符的大小,文本框的尺寸等)

    <resources>
     
        <!-- Default screen margins, per the Android Design guidelines. -->
        <dimen name="activity_horizontal_margin">16dp</dimen>
        <dimen name="activity_vertical_margin">16dp</dimen>
        <dimen name="fontsize">30px</dimen>
        <dimen name="TextViewWidth">120px</dimen>
        <dimen name="EditTextWidth">220px</dimen>
    </resources>

    main.xml当中的布局文件

       1:  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       2:      xmlns:tools="http://schemas.android.com/tools"
       3:      android:layout_width="fill_parent"
       4:      android:layout_height="fill_parent"
       5:      android:orientation="vertical" 
       6:      tools:context=".MainActivity" >
       7:   
       8:      <RelativeLayout 
       9:         android:layout_width="fill_parent"
      10:         android:layout_height="wrap_content"  
      11:          >
      12:      <TextView
      13:          android:id="@+id/name"
      14:          android:layout_width="@dimen/TextViewWidth"
      15:          android:layout_height="wrap_content"
      16:          android:layout_alignParentLeft="true"
      17:          android:layout_centerVertical="true"
      18:          android:text="@string/user"
      19:          android:textSize="@dimen/fontsize" />
      20:      <EditText
      21:          android:layout_width="@dimen/EditTextWidth"
      22:          android:layout_height="wrap_content"
      23:          android:layout_alignParentRight="true"
      24:          android:layout_alignTop="@id/name"
      25:          android:hint="zhuxuekui"
      26:          android:id="@+id/nameValue"
      27:          />
      28:     </RelativeLayout>
      29:     
      30:      
      31:      
      32:      <RelativeLayout 
      33:         android:layout_width="fill_parent"
      34:         android:layout_height="wrap_content"  
      35:          >
      36:      <TextView
      37:          android:id="@+id/secret1"
      38:          android:layout_width="@dimen/TextViewWidth"
      39:          android:layout_height="wrap_content"
      40:          android:layout_alignParentLeft="true"
      41:          android:layout_centerVertical="true"
      42:          android:text="@string/secret"
      43:          android:textSize="@dimen/fontsize" />
      44:   
      45:      <EditText
      46:          android:id="@+id/secret"
      47:          android:layout_width="@dimen/EditTextWidth"
      48:          android:layout_height="wrap_content"
      49:          android:layout_alignParentRight="true"
      50:          android:layout_alignParentTop="true"
      51:          android:ems="10"
      52:          android:hint="123456" >
      53:      </EditText>
      54:     </RelativeLayout>
      55:     
      56:      
      57:     <RelativeLayout 
      58:         android:layout_width="fill_parent"
      59:         android:layout_height="wrap_content"  
      60:          >
      61:      <TextView
      62:          android:id="@+id/age1"
      63:          android:layout_width="@dimen/TextViewWidth"
      64:          android:layout_height="wrap_content"
      65:          android:layout_alignParentLeft="true"
      66:          android:layout_centerVertical="true"
      67:          android:text="@string/age"
      68:          android:textSize="@dimen/fontsize" />
      69:   
      70:      <EditText
      71:          android:id="@+id/age"
      72:          android:layout_width="@dimen/EditTextWidth"
      73:          android:layout_height="wrap_content"
      74:          android:layout_alignParentRight="true"
      75:          android:layout_alignParentTop="true"
      76:          android:ems="10"
      77:          android:hint="20 ">
      78:      </EditText>
      79:     </RelativeLayout>
      80:     
      81:     <RelativeLayout
      82:         android:layout_width="238dp"
      83:         android:layout_height="wrap_content" >
      84:  <TextView
      85:          android:id="@+id/sex"
      86:          android:layout_width="@dimen/TextViewWidth"
      87:          android:layout_height="wrap_content"
      88:          android:layout_alignParentLeft="true"
      89:          android:layout_alignParentTop="true"
      90:          android:layout_marginTop="17dp"
      91:          android:text="@string/sex"
      92:          android:textSize="@dimen/fontsize" />
      93:      <RadioGroup
      94:          android:id="@+id/sex2"
      95:          android:layout_width="wrap_content"
      96:          android:layout_height="wrap_content"
      97:          android:layout_toRightOf="@id/sex"
      98:          android:checkedButton="@+id/woman"
      99:          android:orientation="horizontal" >
     100:   
     101:         <RadioButton
     102:           android:text="@string/man"
     103:           android:id="@+id/man"
     104:          />  
     105:          <RadioButton
     106:           android:text="@string/woman"
     107:           android:id="@+id/woman"
     108:          />    
     109:      </RadioGroup>
     110:     </RelativeLayout>
     111:     
     112:     
     113:         <RelativeLayout 
     114:         android:layout_width="fill_parent"
     115:         android:layout_height="wrap_content"  
     116:          >
     117:      <TextView
     118:          android:id="@+id/city"
     119:          android:layout_width="@dimen/TextViewWidth"
     120:          android:layout_height="wrap_content"
     121:          android:layout_alignParentLeft="true"
     122:          android:layout_centerVertical="true"
     123:          android:text="@string/city"
     124:          android:textSize="@dimen/fontsize" />
     125:   
     126:     <Spinner
     127:         android:id="@+id/spinner"
     128:         android:layout_width="wrap_content"
     129:         android:layout_height="wrap_content"
     130:         android:layout_toRightOf="@+id/city"
     131:         android:entries="@array/citys"
     132:         android:prompt="@string/city" />
     133:   
     134:     </RelativeLayout>
     135:     
     136:         
     137:         <RelativeLayout 
     138:         android:layout_width="fill_parent"
     139:         android:layout_height="wrap_content"  
     140:          >
     141:      <TextView
     142:          android:id="@+id/hobby"
     143:          android:layout_width="@dimen/TextViewWidth"
     144:          android:layout_height="wrap_content"
     145:          android:layout_alignParentLeft="true"
     146:          android:layout_centerVertical="true"
     147:          android:text="@string/hobby"
     148:          android:textSize="@dimen/fontsize" />
     149:   
     150:      <CheckBox
     151:          android:id="@+id/football"
     152:          android:layout_width="wrap_content"
     153:          android:layout_height="wrap_content"
     154:          android:layout_alignParentTop="true"
     155:          android:layout_toRightOf="@+id/hobby"
     156:          android:text="@string/football" />
     157:      
     158:   
     159:              <CheckBox
     160:                  android:id="@+id/pingpong"
     161:                  android:layout_width="wrap_content"
     162:                  android:layout_height="wrap_content"
     163:                  android:layout_alignLeft="@+id/football"
     164:                  android:layout_below="@+id/football"
     165:                  android:text="@string/pingpong" />
     166:              
     167:   
     168:   
     169:               <CheckBox
     170:                   android:id="@+id/basketball"
     171:                   android:layout_width="wrap_content"
     172:                   android:layout_height="wrap_content"
     173:                   android:layout_alignParentTop="true"
     174:                   android:layout_toRightOf="@+id/pingpong"
     175:                   android:text="@string/basketball" />
     176:               
     177:               <CheckBox
     178:                   android:id="@+id/ski"
     179:                   android:layout_width="wrap_content"
     180:                   android:layout_height="wrap_content"
     181:                   android:layout_below="@id/basketball"
     182:                   android:layout_toRightOf="@+id/pingpong"
     183:                   android:text="@string/ski" />
     184:   
     185:     </RelativeLayout>
     186:  <Button 
     187:      android:layout_width="wrap_content"
     188:      android:layout_height="wrap_content"
     189:      android:id="@+id/submit"
     190:      android:text="@string/submit"
     191:      android:textSize="@dimen/fontsize"
     192:      
     193:      />
     194:   
     195:     
     196:  </LinearLayout>

    MainAcitivity.java当中的源码:

       1:  package com.example.login;
       2:   
       3:  import java.util.ArrayList;
       4:  import java.util.List;
       5:   
       6:  import android.R.string;
       7:  import android.os.Bundle;
       8:  import android.app.Activity;
       9:  import android.app.AlertDialog;
      10:  import android.app.ProgressDialog;
      11:  import android.content.DialogInterface;
      12:  import android.view.Menu;
      13:  import android.view.View;
      14:  import android.view.ViewGroup;
      15:  import android.widget.ArrayAdapter;
      16:  import android.widget.Button;
      17:  import android.widget.CheckBox;
      18:  import android.widget.EditText;
      19:  import android.widget.RadioButton;
      20:  import android.widget.RadioGroup;
      21:  import android.widget.Spinner;
      22:   
      23:  public class MainActivity extends Activity {
      24:      
      25:      private EditText name,age,pass;
      26:      private Button regButton;
      27:      private RadioGroup sexRadioGroup;
      28:      private CheckBox basketball,pingpong,football,ski;
      29:      private Spinner citySpinner;
      30:      private List<CheckBox> myhobbysBoxs;
      31:  //    private String[]  cityarray;
      32:      
      33:      private boolean flag = true;
      34:      
      35:      @Override
      36:      protected void onCreate(Bundle savedInstanceState) {
      37:          super.onCreate(savedInstanceState);
      38:          setContentView(R.layout.activity_main);
      39:          //定义一个ArrayList( ) 用来存放所有的checkbox
      40:           myhobbysBoxs = new  ArrayList<CheckBox>();
      41:           
      42:          //得到相应的显示控件的对象
      43:           name = (EditText)findViewById(R.id.nameValue);
      44:           age = (EditText)findViewById(R.id.age);
      45:           pass = (EditText)findViewById(R.id.secret);
      46:           regButton = (Button)findViewById(R.id.submit);
      47:           
      48:           //获取单选框的控件,注意一小点,静态的文件与输入的文本框的id不可以重复
      49:           sexRadioGroup = (RadioGroup)findViewById(R.id.sex2);
      50:           
      51:           //获取多选框的的id并将他们当中的每一个小项放入List<CheckBox> 这样的checkbox类型的List容器中。
      52:           basketball = (CheckBox)findViewById(R.id.basketball);
      53:           myhobbysBoxs.add(basketball);
      54:           pingpong = (CheckBox)findViewById(R.id.pingpong);
      55:           myhobbysBoxs.add(pingpong);
      56:           football = (CheckBox)findViewById(R.id.football);
      57:           myhobbysBoxs.add(football);
      58:           ski = (CheckBox)findViewById(R.id.ski);
      59:           myhobbysBoxs.add(ski);
      60:           
      61:           //获取spinner中的id
      62:           citySpinner = (Spinner)findViewById(R.id.spinner);
      63:           //这是第二种 在.java中显示spinner布局框中的项方法
      64:          //cityarray = getResources().getStringArray(R.array.citys);
      65:          
      66:          //ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, cityarray);
      67:           
      68:           //创建按钮监听事件
      69:           regButton.setOnClickListener(new  View.OnClickListener() {
      70:              //AlertDialog警告对话框,我们可以设置对话框的
      71:              @Override
      72:              public void onClick(View v) {
      73:                  // TODO Auto-generated method stub
      74:                  flag =  addUser();
      75:                  if(flag)
      76:                  {
      77:                      //创建一个 AlertDialog 类的内部类 Builder 的对象
      78:                      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
      79:                      //为 builer 设置标题
      80:                      builder.setTitle("请确认信息")
      81:                      //为 builer 设置消息内容
      82:                        .setMessage("您的信息如下:"+ "
    " 
      83:                              + "姓名:"+ name.getText().toString() + "
    " + "年龄:" + age.getText().toString() + "
    " + "性别:" + getSex() + "
    " 
      84:                              + "爱好:" + getHobby() + "
    " + "城市:" + getCitys() + "
    ")
      85:                      //设置为 false 后,键盘上的后退键失效,默认为ture,也就是说必须按下警告键,后退键无效,所以设置为false
      86:                       .setCancelable(false)
      87:                       //添 加 确 定 按 钮 , 并 添 加 对 该 按 钮 的 处 理 事 件 
      88:                       .setPositiveButton("确定", new DialogInterface.OnClickListener() {
      89:                                  
      90:                                  @Override
      91:                                  public void onClick(DialogInterface dialog, int which) {
      92:                                      // TODO Auto-generated method stub
      93:                                      //进度条,有点像圆形进度条,progressbar。 后面那句说明,现在返回键有效。
      94:                                      ProgressDialog.show(MainActivity.this, "用户信息注册中", "请等待.......").setCancelable(true);
      95:                                      }
      96:                                    }
      97:                                  )
      98:                      .setNegativeButton("修改", new DialogInterface.OnClickListener() {
      99:                                  
     100:                                  @Override
     101:                                  public void onClick(DialogInterface dialog, int which) {
     102:                                      // TODO Auto-generated method stub
     103:                                       dialog.cancel();//删除对话框
     104:                                    }
     105:                               });
     106:                      AlertDialog alertDialog = builder.show();//显示对话框
     107:                  }
     108:                      
     109:                      
     110:                      //创建一个AlertDialog对话框显示登录的信息,这个方法中他会有一个确认的过程,点击确定需要干嘛干嘛,点击取消需要干嘛干嘛
     111:  //                    new AlertDialog.Builder(MainActivity.this).setTitle("请确认信息").setMessage("您的信息如下:"+ "
    " 
     112:  //                            + "姓名:"+ name.getText().toString() + "
    " + "年龄:" + age.getText().toString() + "
    " + "性别:" + getSex() + "
    " 
     113:  //                            + "爱好:" + getHobby() + "
    " + "城市:" + getCitys() + "
    ").setCancelable(false).setPositiveButton("确定", new DialogInterface.OnClickListener() {
     114:  //                                
     115:  //                                @Override
     116:  //                                public void onClick(DialogInterface dialog, int which) {
     117:  //                                    // TODO Auto-generated method stub
     118:  //                                    //进度条
     119:  //                                    ProgressDialog.show(MainActivity.this, "用户信息注册中", "请等待.......").setCancelable(true);
     120:  //                                }
     121:  //                            }
     122:  //                            ).setNegativeButton("修改", new DialogInterface.OnClickListener() {
     123:  //                                
     124:  //                                @Override
     125:  //                                public void onClick(DialogInterface dialog, int which) {
     126:  //                                    // TODO Auto-generated method stub
     127:  //                                     dialog.cancel();//删除对话框
     128:  //                                }
     129:  //                            }).show();     //显示对话框
     130:              }
     131:   
     132:          });
     133:      }
     134:      //从spinner 下拉列表框中获取选择的值
     135:   protected String getCitys() {
     136:          // TODO Auto-generated method stub
     137:        return citySpinner.getSelectedItem().toString();
     138:      }
     139:  //从多选框中获取字符串并返回
     140:      protected String getHobby() {
     141:          // TODO Auto-generated method stub
     142:          //采用一直轮询机制,从1到结束。这种for结构很有趣,然后选择一个加”“。
     143:          String fasString = "";
     144:         for (CheckBox cBox : myhobbysBoxs) {
     145:          if(cBox.isChecked())
     146:          {
     147:              fasString += cBox.getText().toString();
     148:              fasString += ",";
     149:          }
     150:         }
     151:          //substring(int beginIndex, int endIndex)  返回一个新字符串,它是此字符串的一个子字符串。
     152:          if(fasString != "")
     153:          {
     154:              fasString = fasString.substring(0, fasString.length() - 1);
     155:          }
     156:          else {
     157:              fasString = "您没有选择爱好!";
     158:          }
     159:          return  fasString;
     160:      }
     161:  //从单选框中获取字符串并返回
     162:      protected String getSex() {
     163:          // TODO Auto-generated method stub
     164:          RadioButton mButton = (RadioButton)findViewById(sexRadioGroup.getCheckedRadioButtonId());
     165:          return mButton.getText().toString();
     166:      }
     167:   
     168:      //验证输入是否合法
     169:      protected boolean addUser() {
     170:          // TODO Auto-generated method stub
     171:          if (name.getText().toString().length() == 0) {
     172:              name.setError("用户名不能为空");  //在view上的效果是,会出现!号。
     173:              return false;    
     174:          }
     175:          if (age.getText().toString().length() == 0) {
     176:              age.setError("年龄不能为空");
     177:              return false;    
     178:          }
     179:          if (pass.getText().toString().length() == 0) {
     180:              pass.setError("密码不能为空");
     181:              return false;    
     182:          }
     183:          return true;    
     184:      }
     185:   
     186:      @Override
     187:      public boolean onCreateOptionsMenu(Menu menu) {
     188:          // Inflate the menu; this adds items to the action bar if it is present.
     189:          getMenuInflater().inflate(R.menu.main, menu);
     190:          return true;
     191:      }
     192:   
     193:  }

     

  • 相关阅读:
    hdu 2874 Connections between cities(树上倍增)
    HDU 2586 How far away ?
    0-2岁宝宝早教全攻略
    0-2岁宝宝学习能力三步走
    0-6岁教育
    dedecms如何在文章列表前加上序列号
    争吵1
    当爸爸的感觉
    您未被授权查看该页HTTP错误401.1未经授权解决
    TPLink路由器登陆密码怎么破解
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3603870.html
Copyright © 2020-2023  润新知