Contents
  1. 1. ListView
  2. 2. ExpandableListView
  3. 3. WebView使用总结
  4. 4. TextView的属性
  5. 5. DatePickerDialog的总结
    1. 5.1. Calendar跟onDateSet里面的月份比正常少1
    2. 5.2. onDateSet之后求long型日期,月份需要加上1
    3. 5.3. Calendar.getTimeInMillis()得出的是正确的日期
  6. 6. (求long时,dateSet传入的月份要+1)
  7. 7. Checkbox、RadioButton总结
    1. 7.1. RadioButton
    2. 7.2. Checkbox(选中效果必须与HashMap、HashSet等结合使用)

ListView

ListView

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有效

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方法 ,修改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);
}

Contents
  1. 1. ListView
  2. 2. ExpandableListView
  3. 3. WebView使用总结
  4. 4. TextView的属性
  5. 5. DatePickerDialog的总结
    1. 5.1. Calendar跟onDateSet里面的月份比正常少1
    2. 5.2. onDateSet之后求long型日期,月份需要加上1
    3. 5.3. Calendar.getTimeInMillis()得出的是正确的日期
  6. 6. (求long时,dateSet传入的月份要+1)
  7. 7. Checkbox、RadioButton总结
    1. 7.1. RadioButton
    2. 7.2. Checkbox(选中效果必须与HashMap、HashSet等结合使用)