【android】只有小时和分钟的弹出式时间选择器

一、这是什么鬼

在最近的项目中需要用到一个只选择小时和分钟的时间选择器,在网上看了以后发现没有合适的,于是自己参考了一些例子后写了一个,并把它发上来,有需要的可以参考。另外本人也是弱菜,欢迎大家指教。下面上效果图:
这里写图片描述

二、这有什么用

MainActivity有一个EditText,点击以后弹出时间选择器,选择后时间会出现到EditText里。当然大家还能自己拿去修改,得到不同的效果。

三、这该怎么写

1)先在activity_main.xml中写布局。

<EditText android:id="@+id/edit"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:editable="false"
      android:cursorVisible="false"
      />

2)接着,写弹出的时间选择器的布局time_dialog.xml,由于是demo就不管布局的美观了哈~

<TextView  
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="请选择日期和时间"
      />

    <!-- 定义一个TimePicker组件 -->
    <TimePicker android:id="@+id/time_picker"
      android:layout_width="wrap_content" 
      android:layout_height="100dp"
      android:layout_gravity="center_horizontal"
      />

    <Button
        android:id="@+id/time_sure"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="确定"
        />

3)到MainActivity中完成剩余部分代码。

public class MainActivity extends Activity
{
          private int hour;
          private int minute;
          private String time1;
          private String time2;
          private String dateStr;
          private EditText editText;
          private AlertDialog dialog;

    @SuppressLint("SimpleDateFormat")
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText=(EditText)findViewById(R.id.edit);
        editText.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {

                dialog = new AlertDialog.Builder(MainActivity.this).create();
                dialog.show();
                dialog.getWindow().setContentView(R.layout.time_dialog);

                Calendar c = Calendar.getInstance();
                hour = c.get(Calendar.HOUR);
                minute = c.get(Calendar.MINUTE);

                ((TimePicker) dialog.getWindow().findViewById(R.id.time_picker)).setIs24HourView(true);
                ((TimePicker) dialog.getWindow().findViewById(R.id.time_picker)).setOnTimeChangedListener(new OnTimeChangedListener()
                {


                public void onTimeChanged(TimePicker view, int hourOfDay, int minute)
                  {
                    MainActivity.this.hour = hourOfDay;
                    MainActivity.this.minute = minute;

                    time1=Integer.toString(MainActivity.this.hour);
                    time2=Integer.toString(MainActivity.this.minute);
                    dateStr=time1+":"+time2;

                    Log.i("time-------------->",""+dateStr);
                  }
                });


                dialog.getWindow().findViewById(R.id.time_sure).setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v) {

                        SimpleDateFormat df = new SimpleDateFormat("HH:mm");  
                        try {
                             df.parse(time1+":"+time2);

                        } catch (ParseException e) {
                            e.printStackTrace();
                        }

                        editText.setText(dateStr);
                        dialog.dismiss();
                    }});
                }

            });
        }
}

四、备注补充

本人也是弱菜一枚~,若有什么不足或者错误的地方,希望大家能多多指教。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是使用Android Studio创建弹出式菜单的步骤和示例代码: 1. 在res目录下创建menu文件夹,然后在该文件夹下创建一个menu资源文件,例如menu_popup.xml。 2. 在menu_popup.xml文件中添加菜单项,例如: ```xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_item1" android:title="菜单项1" /> <item android:id="@+id/menu_item2" android:title="菜单项2" /> <item android:id="@+id/menu_item3" android:title="菜单项3" /> </menu> ``` 3. 在需要弹出菜单的View上注册上下文菜单,例如: ```java // 注册上下文菜单 registerForContextMenu(view); ``` 4. 重写Activity的onCreateContextMenu()方法,例如: ```java @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu_popup, menu); } ``` 5. 重写Activity的onContextItemSelected()方法,例如: ```java @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item1: // 处理菜单项1的点击事件 return true; case R.id.menu_item2: // 处理菜单项2的点击事件 return true; case R.id.menu_item3: // 处理菜单项3的点击事件 return true; default: return super.onContextItemSelected(item); } } ``` 6. 运行程序,长按需要弹出菜单的View即可看到弹出式菜单。 --相关问题--: 1. 如何在Android Studio中创建菜单资源文件? 2. 如何在Android中创建上下文菜单? 3.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值