| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 实验3 Android界面组件 -> 正文阅读 |
|
[移动开发]实验3 Android界面组件 |
?利用SimpleAdapter实现界面效果 首先,List View为列表视图,是一个视图组,它可以以滑动列表的方式展示项目。而列表项通过使用一个Adapter(适配器)来填充数据。适配器是数据和界面之间的桥梁。采用SimpleAdapter实现界面,因为其可以做一些简单的列表适配。 其次,SimpleAdapter的构造方法为:SimpleAdapter simpleAdapter? = new SimpleAdapter(this , listItems , R.layout.simple_item,new String[]{"personName","header","desc"},new int[]{R.id.name,R.id.header,R.id.desc}); listItems:是一个List<? extends Map<String,>>类型的集合对象,该集合中每个Map<String,?>对象生成一个列表项 R.layout.simple_item:指定一个界面布局的ID,其意为:使用/layout/simple_item.xml文件作为列表项组件 new String[]{"personName","header","desc"}:一个String[]类型的参数,参数决定提取Map<String,?>对象中那些key对应的value来生成列表项 new int[]{R.id.name,R.id.header,R.id.desc}:决定填充哪些组件 0.将图片插入 1.先定义界面布局文件(activity_main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <!--定义一个ListView--> <!--divider:将控件之间隔开--> <!--为了实现单击变色,使用ListView的listSelector属性--> <ListView android:id="@+id/mylist" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="#000" android:dividerHeight="2dp" android:listSelector="#600" /> </LinearLayout> 2.MainActivity中创建SimpleAdapter package com.example.androidlistview; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private String[] names = new String[]{"Lion","Tiger","Monkey","Dog","Cat","Elephant"}; private int[] imagesIds = new int[]{R.drawable.lion, R.drawable.tiger, R.drawable.monkey, R.drawable.dog, R.drawable.cat, R.drawable.elephant}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建一个List合集,List集合的元素是Map List<Map<String, Object>> listItems = new ArrayList<>(); for (int i = 0; i < names.length;i++) { Map<String, Object> listItem = new HashMap<>(); listItem.put("textview", names[i]); listItem.put("imageview", imagesIds[i]); listItems.add(listItem); } //创建一个SimpleAdapter SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.simple_item, new String[]{"textview", "imageview"}, new int[]{R.id.text, R.id.image}); ListView list = findViewById(R.id.mylist); // 为ListView设置Adapter list.setAdapter(simpleAdapter); } } 3.在simple_item.xml中写入相应的布局文件 <?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="wrap_content"> <!--定义一个TexView,用于作为列表项的一部分--> <TextView android:id="@+id/text" android:layout_width="200dp" android:layout_height="wrap_content" android:padding="20dp" android:textSize="20sp" android:textColor="#000" /> <!--定义一个ImageView,用作列表项的一部分--> <ImageView android:id="@+id/image" android:layout_width="80dp" android:layout_height="80dp" android:padding="10dp"/> </LinearLayout> 4.因为需要监听用户单击某个列表项时间,添加setOnItemClickListener(),而且使用Toast显示选中的列表项信息 Toast: Toast toast = Toast.makeText(MainActivity.this, names[position], Toast.LENGTH_SHORT); 第一个参数:当前的上下文环境。可用getApplicationContext()或者getContext()或this 第二个参数:要显示的字符串。也可是R.string中字符串ID 第三个参数:显示的时间长短。Toast默认的有两个LENGTH_LONG(长3.5秒)和LENGTH_SHORT(短2秒) (ps.选中某个时间列表项为:setOnItemSelectedListenter()) // 为ListView的单击事件绑定事件监听器 得到结果: ?
AlertDialog.Builder的提供setView()方法接受View组件,可以随心所欲的订制对话框中的内容
1.先定义登录界面布局
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:src="@drawable/header_logo"/> <EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="username" android:textSize="18dp" /> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="password" android:textSize="18dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="#808080" android:dividerHeight="2dp" android:layout_weight="1" android:background="#ffffff" android:text="Cancel" android:textColor="#000000" android:textSize="15dp" /> <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="#808080" android:dividerHeight="2dp" android:layout_weight="1" android:background="#ffffff" android:text="Sign in" android:textColor="#000000" android:textSize="15dp" /> </LinearLayout> </LinearLayout>
2.调用AlertDialog.Builder的setView方法让对话框显示该输入界面
public void customView(View source) { //加载布局文件 TableLayout loginForm = (TableLayout) getLayoutInflater().inflate(R.layout.activity_main,null); //创建AlertDialog对象 //AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); new AlertDialog.Builder(this) .setView(loginForm) .create().show(); } 得到结果: ?
1.在activity_main.xml中布局,TextView
<TextView android:id="@+id/txt" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:textSize="18dp" android:text="用于测试的内容"/> 2.新建文件夹menu,在其中新建menu_main.xml和context.xml menu_main.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="字体大小"> <menu> <!-- 定义一组单选菜单--> <group android:checkableBehavior="single"> <item android:id="@+id/font_10" android:title="10号字体"/> <item android:id="@+id/font_16" android:title="16号字体"/> <item android:id="@+id/font_20" android:title="20号字体"/> </group> </menu> </item> <!-- 定义一个普通菜单项--> <item android:title="普通菜单项"> </item> <item android:title="字体颜色"> <menu> <!-- 定义一组普通菜单项--> <group> <!-- 定义三个菜单项--> <item android:id="@+id/red_font" android:title="红色" /> <item android:id="@+id/black_font" android:title="黑色" /> </group> </menu> </item> </menu> context.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 定义一组单选菜单项 --> <group android:checkableBehavior="single"> <!-- 定义两个菜单项 --> <item android:id="@+id/red" android:title="红色" android:alphabeticShortcut="r"/> <item android:id="@+id/green" android:title="黑色" android:alphabeticShortcut="g"/> </group> </menu> 3.在MainActibity.java中运用onCreateContextMenu方法和onCreateOptionsMenu方法加载菜单资源 @Override public boolean onCreateOptionsMenu(Menu menu) { // 装填R.menu.menu_main对应的菜单,并添加到menu中 getMenuInflater().inflate(R.menu.menu_main, menu); return super.onCreateOptionsMenu(menu); } // 创建上下文菜单时触发该方法 @Override public void onCreateContextMenu(ContextMenu menu, View source, ContextMenu.ContextMenuInfo menuInfo) { // 装填R.menu.context对应的菜单,并添加到menu中 getMenuInflater().inflate(R.menu.context, menu); menu.setHeaderTitle("请选择背景色"); } @Override public boolean onOptionsItemSelected(MenuItem mi) { // 勾选该菜单项 if (mi.isCheckable()) { mi.setChecked(true); // ② } // 判断点击的是哪个菜单项,并做出响应 switch (mi.getItemId()) { case R.id.font_10: txt.setTextSize(10 * 2); break; case R.id.font_16: txt.setTextSize(16 * 2); break; case R.id.font_20: txt.setTextSize(20 * 2); break; case R.id.red_font: txt.setTextColor(Color.RED); break; case R.id.black_font: txt.setTextColor(Color.BLACK); break; case R.id.plain_item: //点击之后弹出Toast提示 Toast.makeText(MainActivity.this, "您单击了普通菜单项", Toast.LENGTH_SHORT) .show(); break; } return true; } 运行结果: ?
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:54:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |