今天学长讲了一些控件,比较强的那种控件。

  刚开始讲了图片,但是图片我前面写过了就跳过。

滚动条牛牛们应该很熟悉,也常用哈。

  

这是垂直的滚动条视图哈

一起来用吧!

<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:fillViewport="true">
<TextView
android:id="@+id/text"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:gravity="top"
android:layout_marginBottom="100dp"
android:text="text">
</TextView> </ScrollView> 主活动:
final TextView t=findViewById(R.id.text);

for (int i = 0; i <30; i++) {
t.append("\n分"+i);
}
效果:

注意右边的那个灰色的,就是滚动条啦!

注意:ScrollView的子元素只能有一个,可以是一个View(如ImageViewTextView等) 也可以是一个ViewGroup
(如LinearLayoutRelativeLayout等),其子元素内部则不再限制,否则会报异常。
本牛崽就犯了这类错误,想着嵌套垂直和水平滚动条来着,谁知道搞半天没用,因为我是直接嵌套进去的,
应该在写了垂直滚动后添加一种布局,然后在布局里水平滚动就好。 这边是完全嵌套的滚动条布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="20dp"> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal"> <ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" /> <ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" /> <ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" /> <ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_margin="20dp"
android:src="@mipmap/ic_launcher" /> </LinearLayout>
</HorizontalScrollView> <Button
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="内容一"
android:textColor="#03A9F4"
android:textSize="24sp" /> <Button
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容二"
android:textColor="#03A9F4"
android:textSize="24sp" /> <Button
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="内容三"
android:textColor="#03A9F4"
android:textSize="24sp" /> <Button
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="80dp"
android:layout_marginBottom="80dp"
android:gravity="center"
android:text="内容四"
android:textColor="#03A9F4"
android:textSize="24sp" />
</LinearLayout>
</ScrollView>

然后机器人可以向右边拖

内容可以向下拖。

接下来的是日期,就把图贴上了,注意操作在主活动。

主活动主要是获得当前的日期。并且监听。

那我就再做个按钮输出当前日期到running中。

主活动代码:

final DatePicker datePicker = findViewById(R.id.date);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int year = datePicker.getYear();
int month = datePicker.getMonth();
int day = datePicker.getDayOfMonth();
System.out.println("year:" + year + ",month:" + (month + 1) + ",day:" + day);
}
});

应该不难理解,上面的刚开始就是找到布局中的日历,

然后直接给按钮创建监听器。按钮我当时就没在布局写了,因为截图截早了。

然后就是把他们的年月日找出来呗,这里注意月份0-11,所以month要+1

// 设置选择日期时的监听
datePicker.setOnDateChangedListener(new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
System.out.println("year:" + year + ",month:" + (monthOfYear + 1) + ",day:" + dayOfMonth);
}
});

监听事件就这样呗,这是日期专属的监听事件方法,重写下就看得出和一般监听器大同小异。

监听事件的方法应该不用多说吧,日期对象,年,当前年份的月,当前月份的天。

我们就是在日历上点哪个,就输出当前的信息(年月日)

还有一种比较热门的日期:

<CalendarView
android:id="@+id/calenderView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:firstDayOfWeek="3"
android:shownWeekCount="4"
android:selectedWeekBackgroundColor="#aff"
android:focusedMonthDateColor="#f00"
android:weekSeparatorLineColor="#ff0"
android:unfocusedMonthDateColor="#f9f">
</CalendarView> <Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_weight="1"
android:text="获取当前日期" />
这个日期它比较特
final CalendarView calendarView=findViewById(R.id.calenderView);
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
long y=calendarView.getDate();
System.out.println(y);
}
});
殊吧,比如他不能获取当前的年月日,但是能获取到1970.1.1的0点到当前时间的毫秒

I/System.out: 1589554516099

这是按钮监听器拿到的,

因为长整型范围也有限,大概只能算到2038年。

然后他也可以使用监听事件,和上面那个监听事件一样。

final CalendarView calendarView=findViewById(R.id.calenderView);
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { long date=calendarView.getDate();
String s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println(s);
}
});
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
System.out.println(year+" "+(month+1)+"  "+dayOfMonth);
}
});
改了下,并搭上了它的监听事件,毕竟都是日期,前面的监听类型应该是一样,后面的内容就不一样了。
刚刚那个长整型的毫秒,用那段话就能转换成时间,有点奇怪的是时不对,我能想到的是时区的问题,
因为我们是东时区,我们的起始时间其实是1970.1.1的早上八点,
而计算出来的就比当前时间少了八个小时,所以现在系统统计的是外国人的时间,哈哈。

都讲了日期了,时间是肯定不能少的了,所以把惹人爱的时钟搬出来了。

不懒了,这我还是写个按钮吧!

这种不是数字钟表哈,文化人才看的懂滴。

这边没有24小时制,只有上下午夜;但如果是获取数据就可以24小时制。

日期有他专属的监听事件,时间也有;

final TimePicker picker = findViewById(R.id.time);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {//二话不说,先搞个按钮监听下,把时分都安排上。

int hour = picker.getHour();
int minute = picker.getMinute();//获取分钟
System.out.println(hour + ":" + minute);//输出当前时分,挺遗憾没有秒这个单位
}
});
// 添加时间选择的监听事件
picker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {//和日期的都差不多,
System.out.println(hourOfDay + ":" + minute);//这边监听也是获得当前的时分咯!
}
});

可以看出监听的效果了吧,可以比较准确获得当前系统时间。

今天的内容就这些,又冒出来几个监听事件,感觉监听事件好像很多啊,所以我去搜了下,

监听事件有这么多,我蒙了

https://blog.csdn.net/weixin_41101173/article/details/81270133

Android 布局控件——滚动条视图,日期,时间的更多相关文章

  1. Mono for Android布局控件属性小结

    1. layout_weight 用于给一个线性布局中的诸多视图的重要度赋值. 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间.若赋一个高于 ...

  2. js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js

    日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...

  3. C#中使用DateTimePicker控件显示修改日期时间

    1.只显示日期   默认就是   2.只显示时间   修改属性 Format 设为Time ShowUpDown设为true   3.同时显示日期时间   Format设为Custom CustomF ...

  4. [Xcode 实际操作]四、常用控件-(11)UIDatePicker日期时间选择器

    目录:[Swift]Xcode实际操作 本文将演示日期拾取器的使用. 使用日期拾取器,可以快速设置和选择日期与时间. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] ...

  5. Android布局控件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  6. android 测量控件视图的方法

    在实际项目中经常要用到 测量一个控件或者视图的高,宽.然后根据这个高宽进行一些逻辑. 计算视图宽高有几种方式先简单的了解下android 视图的绘制过程会促进理解. 一.android View绘制过 ...

  7. Android:控件布局(相对布局)RelativeLayout

    RelativeLayout是相对布局控件:以控件之间相对位置或相对父容器位置进行排列. 相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above-- ...

  8. Android:控件布局(线性布局)LinearLayout

    LinearLayout是线性布局控件:要么横向排布,要么竖向排布 决定性属性:必须有的! android:orientation:vertical (垂直方向) .horizontal(水平方向) ...

  9. 【Android】7.1 布局控件常用的公共属性

    分类:C#.Android.VS2015: 创建日期:2016-02-10 一.简介 Android应用程序中的布局控件都是容器控件,用于控制子元素的排列和放置方式.Android提供的布局控件有: ...

随机推荐

  1. Mysql 实例:mysql语句练习50题(sqlalchmy写法)

    为了练习sql语句,在网上找了一些题,自己做了一遍,收益颇多.很多地方换一种思路,有更好的写法,欢迎指正. 题目地址:https://blog.csdn.net/fashion2014/article ...

  2. java 面向对象(二十九):异常(二)异常的处理

    1.java异常处理的抓抛模型过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象. * 并将此对象抛出. * 一旦抛出对象以后,其后的代 ...

  3. Viper解析&加载配置

    Viper解析&加载配置 1    Viper是什么 Viper是一个方便Go语言应用程序处理配置信息的库.它可以处理多种格式的配置.它支持的特性: 设置默认值 从JSON.TOML.YAML ...

  4. 01-flask虚拟环境

    一.虚拟环境 每一个环境都相当于一个新的操作系统.你可以在这个新的环境里安装软件,保存资料.每一个虚拟环境可以安装不同版本的软件,在不同虚拟环境中运行不同版本的软件互不影响.   二.virtuale ...

  5. angular浏览器兼容性问题解决方案

    问题:edge浏览器下,固定列的边框消失 原因:ng-zorro-antd表格组件使用nzLeft和nzRight指令固定的表格列,这两个指令的实现css3中的标签: position: -webki ...

  6. 用matplotlib绘制图片示例(新)

    test /*! * * Twitter Bootstrap * */ /*! * Bootstrap v3.3.7 (http://getbootstrap.com) * Copyright 201 ...

  7. dva + umi 学习笔记

    首先,这里的 dva + umi 不是说学习dva和umi,而是基于 dva + umi 的react前端开发脚手架,这是我的目标. 一开始,我在dva文档的例子里看到了 dva + umi 的例子. ...

  8. 设计模式:Adapter模式

    目的:复用代码和兼容以前的代码 思想:提供一个中间层,做兼容 方法:“继承”的方式,“委托”的方式 继承关系图: 委托方式 继承方式 例子: //原来的打印 class Print { public: ...

  9. GitHub和码云gitee及远程仓库管理

    目录 备注: 知识点 GitHub 码云(gitee.com) gitee的使用 本地版本库关联多个远程库 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢 ...

  10. WPF 有缩放时显示线条的问题

    公司项目已经开发好几年了,用的WPF开发的,期间遇到好多问题,都是些小细节.很久没有写博客了,以后有时间还是需要写写博客啊!作为分享也好.记录也好,利人利己嘛. 今天主要说一下显示线条的问题,因为我们 ...