• Widgets学习


    ListView

    ListView

    RecyclerView

    RecyclerView

    ExpandableListView

    • 关闭箭头

      elvMsg.setGroupIndicator(null); //箭头置空
      
    • 默认展开(通过setOnGroup设置,返回false为不展开,true为展开)

      elvMsg.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
          @Override
          public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
              return false; //默认展开
          }
      });
      

    WebView使用总结

    • 设置默认加载方式

      wvAD.loadUrl(url);//必须先调用
      wvAD.setWebViewClient(new WebViewClient() {
              @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                  view.loadUrl(url);
                  return true; //返回true代表使用webview加载网页
                }
      });
      
    • 设置页面支持缩放

      WebSettings mWebSettings = wvAD.getSettings();
      mWebSettings.setBuiltInZoomControls(true); // 支持页面放大缩小按钮
      mWebSettings.setSupportZoom(true);
      
    • 设置页面标题

      wvAD.setWebChromeClient(new WebChromeClient() {
              @Override
              public void onReceivedTitle(WebView view, String title) {
                  super.onReceivedTitle(view, title);
                  refreshTitle(title);//重写该方法即可更改标题
              }
          });
      

    TextView的属性

    • maxWidth属性跟singleLine属性连用可设置文字超过一定字数自动加“。。。”

    android:maxWidth="200dp"
    android:singleLine="true"
    
    • 代码中设置drawable
    Drawable drawable = getResources().getDrawable(R.drawable.course_manage_agency_icon);
      drawable.setBounds(0,0,100,100); //可以改变图标大小
      tvAgencyValue.setCompoundDrawables(drawable,null,null,null);//调用这个方法可以使setBounds有效
    
    • textColor属性可以设置selector

      • textColor必须调用 “@color/red_selector” 而不是 “@drawable/red_selector”

        android:textColor="@color/teach_kq_button_text_color_selector"
        
      • selector里不能用drawable属性,否则会报错,直接用color即可。

        <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" android:color="@color/common_text_red" />
        <item android:state_checked="true" android:color="@color/common_text_red" />
        <item android:color="@color/common_text_gray" />
        </selector>
        

    DatePickerDialog的总结

    Calendar跟onDateSet里面的月份比正常少1

    onDateSet之后求long型日期,月份需要加上1

    Calendar.getTimeInMillis()得出的是正确的日期


    • DatePicker显示成滑动模式

      android:calendarViewShown="false"
      android:datePickerMode="spinner"
      
    • DatepickerDialog用法初始化日期(结合Calendar)

      Calendar nowCalendar = Calendar.getInstance();//获取当前日历(参照物)
      
      Calendar startCalendar = Calendar.getInstance();//获取当前日历,用于设置开始日期
      
      startCalendar.set(Calendar.YEAR , nowCalendar.get(Calendar.YEAR));//获取当前的年
      startCalendar.set(Calendar.MONTH , nowCalendar.get(Calendar.MONTH));//获取当前的月
      startCalendar.set(Calendar.DAYOFMONTH , nowCalendar.get(Calendar.DAYOFMONTH));//获取当前的日
      
      long startDate = startCalendar.getTimeInMillis(); //初始化long日期
      String strDate = FormatUtil.getStringFromDate(startDate);//根据long初始化成str文字日期
      
    • DatepickerDialog 修改数据用法

      • Calendar初始化日期、初始化long日期、初始化str日期
      • 创建DatepickerDialog.OnDateSetListener监听器 重写其onDateSet方法 大专栏  Widgets学习 ,修改Calendar的日期(set方法)

        final DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int day) {
                long date = FormatUtils.getTimestampByDate(year, month + 1, day); //利用dateSet的日期需要+1;
                if (date > System.currentTimeMillis()) {
                    //提示日期不能超过当前时间
                } else {
                    calendar.set(year, month, day);//通过calendar保存日期
                    shareDate = calendar.getTimeInMillis(); //获取该日期的时间戳
                    strDate = FormatUtils.getDateFormatType1Str(shareDate);//设置该日期
                    tvShareDate.setText(strDate);
                }
            }
        };
        
    * 通过Calendar 初始化Dialog的日期。
    * 创建DatepickerDialog对象,传入上述的参数(通过Calendar来获取)  
    
    
                int year = calendar.get(Calendar.YEAR);
                int month = calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);
                DatePickerDialog dialog = new DatePickerDialog(this, listener, year, month, day);
                dialog.show();
    

    • 把Datepicker的年月日转成时间戳

      (求long时,dateSet传入的月份要+1)

      public long getTimestampByDate(int year, int month, int day) throws Exception {
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
          String strDate = year + "-" + month + "-" + day; //拼装
          Date date = sdf.parse(strDate);
          return date.getTime(); //转换成时间戳
      }
      

    总结:

    • 直接用Calendar、dateset设置数据不需要+1.
    • 需要用long进行判断且获取Calendar月份的时候,月份才需要加一。

    示例: 实现下面效果

    • 初始化数据

      • 进入界面利用Calendar的set()或者setTimeInMillis()设置数据
      • 利用上述Calendar获取long时间戳
      • 格式化时间戳显示成文字
    • 修改数据

      • 创建DatePickerDialog.OnDateSetListener,利用Calendar修改数据、获取时间戳、显示文字
      • 创建DatePickerDialog,初始化dialog默认日期。(上述)

    Checkbox、RadioButton总结

    RadioButton

    • Radiobutton去掉圆圈

      android:button=”@null”

    • 改变圆圈样式,自定义shape

      android:drawableLeft、Right、Top、Bottom 调用该图片

    • 创建selector,设置check 属性对应的图片即可

      • 选中的设置 checked、selected属性
      • 默认的不用设置属性(一定要放在最下面)

        <item android:state_selected="true" android:drawable="@drawable/选中的图" />
        <item android:state_checked="true" android:drawable="@drawable/选中的图" />
        <item android:drawable="@drawable/不选中的图" />
        

    还需要设置默认第一个tag为红色。
    在Activity中通过setSelected()方法设置为红色。
    在点击事件里,设置其他button为灰色
    代码如下:

    @Override
    public void onClick(View v) {
    
        if(index == 0){
            btn1.setSelected(true);
            btn2.setSelected(false);
                .
                .
            btn10.setSelected(false);
        }
    }  
    

    Checkbox(选中效果必须与HashMap、HashSet等结合使用)

    • 在item点击事件里将position、数据保存在hashmap即可。
    • 通过判断HashMap里面是否含有该值来设置是否选中。

    • ListView中用ImageView实现单选效果(如图)

      • 使用一个ImageView代替Checkbox
      • 创建一个HashMap //通过position做key保存id
      • 在点击事件里,每点击一次将原有的数据清空,再重新加入值(保证hashmap集合只包含一个值。)
    convertView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectItem.clear(); //清空原有的数据,保证单选
            selectItem.put(position,user.getUserId());
            mAdapter.notifyDataSetChanged();
        }
    });
    
    if(selectIten.keySet().contains(position)){
        holder.ivCheck.setVisibility(View.VISIBLE);
    }else{
        holder.ivCheck.setVisibility(View.GONE);
    }
    

  • 相关阅读:
    mac os x 查看网络端口情况
    mac 启动php-fpm报错 failed to open configuration file '/private/etc/php-fpm.conf': No such file or direc
    视频播放—— H5同层播放器接入规范
    [转]webpack中require和import的区别
    职场方法论系列—怎样做项目
    一幅图帮你搞懂订单的拆分与合并
    如何用数据去驱动决策?
    分库分表的 9种分布式主键ID 生成方案,挺全乎的
    快手基于 Apache Flink 的优化实践
    SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12366195.html
Copyright © 2020-2023  润新知