Android:有关下拉菜单导航的学习(供自己参考)
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:有关下拉菜单导航的学习(供自己参考)的更多相关文章
- 仿新浪游戏频道js多栏目全屏下拉菜单导航条
仿新浪游戏频道js多栏目全屏下拉菜单导航条,新浪,游戏频道,js组件,多栏目,全屏下拉,下拉菜单,导航条.代码下载地址:http://www.huiyi8.com/sc/26765.html更多请访问 ...
- android 自定义下拉菜单
本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计.弹出的动画效果主要用到了translate.alpha.scale,具体实现步骤如下: 先上 ...
- android 多级下拉菜单实现教程
原创,如转载请标明链接:http://blog.csdn.net/q610098308/article/details/50333387 很多App,都有二级菜单出现,但android 本身实现的菜单 ...
- jQuery纵向分类下拉菜单导航
在线演示 本地下载
- CSS技巧分享:如何用css制作横排二级下拉菜单
原文:CSS技巧分享:如何用css制作横排二级下拉菜单 导航菜单是每个网站所必备的功能,也是每个学习制作网站的朋友所必须接触的,如何用css样式制作一个简单漂亮的二级下拉菜单呢,下来小编就一步一步教大 ...
- SpinnerViewPop【PopWindow样式(单选)、Dialog样式(单选+多选)的下拉菜单】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 对下拉菜单的文本区域和列表区域进行了封装.包括两种展现方式:popwindow(单选).dialog(单选+多选) 因为该封装需要在 ...
- jquery下拉菜单
下拉菜单或者导航是我们在网站开发中不可或缺的网站元素之一,使用jQuery可以制作出简洁易用.美观大方的下拉菜单或者导航效果. 下面展示的12款利用jQuery实现的下拉菜单即导航效果整理自前端大牛爱 ...
- js (单个的)点击式下拉菜单
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Android实现下拉导航选择菜单效果
本文介绍在Android中如何实现下拉导航选择菜单效果. 关于下拉导航选择菜单效果在新闻客户端中用的比较多,当然也可以用在其他的项目中,这样可以很方便的选择更多的菜单.我们可以让我们的应用顶部有左 ...
随机推荐
- 【CSU 1803】2016 (数学)
Description 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. Input 输入包含不超过 30 ...
- 局域网内python socket实现windows与linux间简单的消息传送
有个需求,就是在windows上看见一篇介绍linux相关的文章,想在局域网内的另外一台linux电脑上尝试一下, 于是就需要把该网页链接发送给linux,不想一点一点敲链接,又苦于没有找到其它好的方 ...
- django中的auth详解
Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等 ...
- 如何通过SQL语句写入webshell
在web应用场景下,经常会碰到SQL注入场景,如页面能够执行SQL语句,那么可能会有直接通过SQL语句写入webshell的风险,常见的phpmyadmin环境下,通过几个语句可以轻松将一句话木马写入 ...
- BurpSuite—-Scanner模块(漏洞扫描)
一.简介 Burp Scanner 是一个进行自动发现 web 应用程序的安全漏洞的工具.它是为渗透测试人员设计的,并且它和你现有的手动执行进行的 web 应用程序半自动渗透测试的技术方法很相似. 使 ...
- 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?
本文由 网易云发布. 5月19日,LiveVideoStack携手网易云易盾,共同打造了“娱乐多媒体开发应用实践”专题,帮助开发者和泛娱乐平台运营人员,提升技术能力,突破难点,拓展思路与视野. 在专 ...
- PTA(Basic Level)-1002 写出这个数
一 1002 写出这个数 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1010 ...
- Angular Elements
Angular Elements Angular Elements 就是打包成自定义元素的 Angular 组件.所谓自定义元素就是一套与具体框架无关的用于定义新 HTML 元素的 Web 标准. 自 ...
- 20155302 2016-2017-2 《Java程序设计》 第1周学习总结
20155302 2016-2017-2 <Java程序设计> 第1周学习总结 教材学习内容总结 浏览全书提出问题 chapter1:怎么保证现在系统在用最高版本的JRE呢?在哪里查看及升 ...
- 20155308&20155316 2017-2018-1 《信息安全系统设计基础》实验三
20155308&20155316 2017-2018-1 <信息安全系统设计基础>实验三 并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现 ...