Android:有关下拉菜单导航的学习

因为先前的学习都没想着记录自己的学习历程,所以该博客才那么迟才开始写。

内容: 下拉菜单导航

学习网站:android Spinner控件详解

Spinner提供了从一个数据集合中快速选择一项值的办法。默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值。

阶段一:最简单的Spinner

1、在布局文件中添加Spinner控件

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.dropdownlayout.MainActivity"> //AppBarLayout和Toolbar是对布局页面顶部的条进行操作
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" /> //该部分才是下拉菜单的本体
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/spinner"
android:entries="@array/places"></Spinner>//从这行可以看到资源都是从@array来的,因此需要一个这样的存放资源的xml文件 </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> </android.support.design.widget.CoordinatorLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="places">
<item>Beijing</item>
<item>Guangzhou</item>
<item>Shanghai</item>
</string-array>
</resources>

效果:

但是这个终究只是效果,若要对选择进行回应就需要更加复杂的步骤来完善。一般情况下我们是需要响应Spinner选择事件的,可以通过OnItemSelectedListener的回调方法实现

MainActivity:

package com.example.dropdownlayout;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.Toast; public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{ private Spinner spinner ; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initUI();
} private void initUI(){
spinner = (Spinner)findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);
} @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String[] places = getResources().getStringArray(R.array.places);
Toast.makeText(MainActivity.this,"你点击的是:"+places[i],Toast.LENGTH_SHORT).show();
} @Override
public void onNothingSelected(AdapterView<?> adapterView) { }
}

效果:

阶段二:学会设置Spinner的BaseAdapter

通过BaseAdapter可以自定义自己的菜单形式,但菜单的形式需要自己来设计

spinnerview:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:id="@+id/personName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="personName "
android:textSize="20dp"
android:textColor="@color/colorAccent"/> <TextView
android:id="@+id/personAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="personAddress"
android:textSize="20dp"
android:textColor="@color/colorAccent"/> </LinearLayout>

main.xml中的spinner要把enteries这一项去掉。

Person.java

package com.example.dropdownlayout;

/**
* Created by Funny_One on 2017/8/18.
*/ public class Person {
public String personName,personAddress; public Person(String personName,String personAddress){
this.personAddress = personAddress;
this.personName = personName;
} public String getPersonAddress() {
return personAddress;
} public String getPersonName() {
return personName;
}
}

Myadapter.java

package com.example.dropdownlayout;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView; import java.util.List; /**
* Created by Funny_One on 2017/8/18.
*/ public class Myadapter extends BaseAdapter { public List<Person> mList;
public Context context;
public View mView; public Myadapter(Context context,List<Person> mList){
this.mList = mList;
this.context = context;
} @Override
public int getCount() {
return mList.size();
} @Override
public Object getItem(int i) {
return mList.get(i);
} @Override
public long getItemId(int i) {
return i;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
mView = layoutInflater.inflate(R.layout.spinnerview,null);
TextView personName = (TextView)mView.findViewById(R.id.personName);
TextView personAddress=(TextView)mView.findViewById(R.id.personAddress);
personAddress.setText(mList.get(i).getPersonAddress());
personName.setText(mList.get(i).getPersonName());
return mView;
}
}

MainActivity:

    package com.example.dropdownlayout;

import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.Toast; import java.util.ArrayList;
import java.util.List; public class MainActivity extends Activity { private Spinner spinner ;
private List<Person> persons;
private Myadapter myadapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spinner = (Spinner)findViewById(R.id.spinner);
persons = new ArrayList<Person>();
persons.add(new Person(" 袁逸灏 "," 广东 "));
persons.add(new Person(" 春旺 "," 云南 "));
persons.add(new Person(" 刘先润 "," 重庆 "));
persons.add(new Person(" 刘诚昊 "," 湖南 "));
myadapter = new Myadapter(this,persons); spinner.setAdapter(myadapter);
} }

效果:

Android:有关下拉菜单导航的学习(供自己参考)的更多相关文章

  1. 仿新浪游戏频道js多栏目全屏下拉菜单导航条

    仿新浪游戏频道js多栏目全屏下拉菜单导航条,新浪,游戏频道,js组件,多栏目,全屏下拉,下拉菜单,导航条.代码下载地址:http://www.huiyi8.com/sc/26765.html更多请访问 ...

  2. android 自定义下拉菜单

    本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计.弹出的动画效果主要用到了translate.alpha.scale,具体实现步骤如下: 先上 ...

  3. android 多级下拉菜单实现教程

    原创,如转载请标明链接:http://blog.csdn.net/q610098308/article/details/50333387 很多App,都有二级菜单出现,但android 本身实现的菜单 ...

  4. jQuery纵向分类下拉菜单导航

    在线演示 本地下载

  5. CSS技巧分享:如何用css制作横排二级下拉菜单

    原文:CSS技巧分享:如何用css制作横排二级下拉菜单 导航菜单是每个网站所必备的功能,也是每个学习制作网站的朋友所必须接触的,如何用css样式制作一个简单漂亮的二级下拉菜单呢,下来小编就一步一步教大 ...

  6. SpinnerViewPop【PopWindow样式(单选)、Dialog样式(单选+多选)的下拉菜单】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 对下拉菜单的文本区域和列表区域进行了封装.包括两种展现方式:popwindow(单选).dialog(单选+多选) 因为该封装需要在 ...

  7. jquery下拉菜单

    下拉菜单或者导航是我们在网站开发中不可或缺的网站元素之一,使用jQuery可以制作出简洁易用.美观大方的下拉菜单或者导航效果. 下面展示的12款利用jQuery实现的下拉菜单即导航效果整理自前端大牛爱 ...

  8. js (单个的)点击式下拉菜单

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. Android实现下拉导航选择菜单效果

    本文介绍在Android中如何实现下拉导航选择菜单效果.   关于下拉导航选择菜单效果在新闻客户端中用的比较多,当然也可以用在其他的项目中,这样可以很方便的选择更多的菜单.我们可以让我们的应用顶部有左 ...

随机推荐

  1. npm run build 时报错operation not permitted

    1.项目使用vue框架,在npm run build 打包时报错: 访问对应的目录,发现无法打开,原来是文件被其他应用程序占用了,仔细看了一下,xftp文件传输的软件打开着,把它关闭以后,重新运行np ...

  2. javascript json对象操作(基本增删改查)

    /** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * g ...

  3. float(浮动)的属性和使用方法

    1float浮动的属性值 left:向左浮动 right:向右浮动 2.当父元素未浮动,子元素浮动时,就会造成浮动塌陷 实例: 父元素: #mainDiv{ border: 5px solid red ...

  4. laravel5.5源码笔记(六、中间件)

    laravel中的中间件作为一个请求与响应的过滤器,主要分为两个功能. 1.在请求到达控制器层之前进行拦截与过滤,只有通过验证的请求才能到达controller层 2.或者是在controller中运 ...

  5. T+API实现

    目前用友的T+,官方提供了APi给用户直接调用,但是必3须申请,而且还必须是企业用户,估计是收费的. 这边接到一个开发外包,调用其他应用的数据同步到t+里,我首先想到的就是直接调用t+提供的APi,这 ...

  6. 树莓派3B+学习笔记:13、不间断会话服务screen

    screen是一款能够实现多窗口远程控制的开源服务程序,简单来说就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序.用户还可以使用screen服务程序同时在多个远程会话中自由切换,能够 ...

  7. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--J-强迫症的序列

    链接:https://www.nowcoder.com/acm/contest/90/J 来源:牛客网 1.题目描述 牛客网是IT求职神器,提供海量C++.JAVA.前端等职业笔试题库,在线进行百度阿 ...

  8. 对Prolog的感想和我写的一些教程

    我第一次见到Prolog这门独特的编程语言是在<七周七语言(Seven Languages in Seven Weeks)>中看到的.<七周七语言>名字看起来与市面上什么< ...

  9. Matlab_GUI

    1.GUI中控件的属性 BackgroundColor 控件的背景 FontSize  控件字体的大小

  10. 20155305 2016-2017-2 《Java程序设计》实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 单元测试 1. ...