爱吃榴莲的随记

目录

Dialog背景设置tip

RecyclerView删除刷新

透明度设置

EditText、引用字体文件

app包中的fragment和v4包中fragment的使用区别

Java基础 equals 和 “==”

ScrollView中嵌套ListView,ListView显示不全的问题

截取字符串

用gson解析该类型数据

ListView中item点击事件失效

Button点击事件失效问题

Activity的四种launchMode

去掉Button默认内边距


Dialog背景设置tip

getWindow().setBackgroundDrawableResource(android.R.color.transparent);
...
setContentView(view);

设置背景透明,布局文件中设置的背景(如:shape里的圆角设置)才显现。

 

RecyclerView删除刷新

// delete data and refresh list
// currentPosition:删除数据的id
datas.remove(currentPosition);
adapter.notifyItemRemoved(currentPosition);
if (currentPosition != datas.size()) {
    adapter.notifyItemRangeChanged(currentPosition, datas.size() - currentPosition);
} 

 

设置ImageView宽度固定,高度按比例缩放适应

<ImageView 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitXY" />

 

透明度设置

代码设置:button.getBackground().setAlpha(128)。setAlpha()的值0~255,数字越大越不透明。

布局设置:anroid:alpha属性,值范围0~1,数字越大,越不透明。1表示完全不透明,0表示完全透明。

 

EditText、引用字体文件

1.通常情况下,输入number一类的请求数据,加上一个范围的判断,超过范围,让用户重新输入

2.添加光标:edt_num.requestFocus();

3. string转int型时,最好加上 try{}catch{} 判断,以防 NumberFormatException 错误

 

try {
    
} catch (NumberFormatException e){
    e.printStackTrace();
}

4.给EditText设置输入长度:android:maxLength="6"

5.引用字体设置TextView

TextView appname = findViewById(R.id.appname);
Typeface typeface = Typeface.createFromAsset(getAssets(), "jianti.ttf");
appname.setTypeface(typeface);

"jianti.ttf":即为引用的字体,放入新建的assets包

 

/*--------------------------------------------------------------------------------------------------------*/

app包中的fragment和v4包中fragment的使用区别

2016/7/27 Wednesday morning

1、版本问题

   app包下的是版本3.0以后出现的,支持高版本;v4包下的兼容了3.0以下的,可以兼容到版本1.6

2、使用<fragment>标签的问题

   两者都可以使用<fragment>标签,但是v4包下的在使用时activity必须继承自FragmentActivity,而app包下则可以继承Activity

3、FragmentManager

   继承Activity用getFragmentManager,继承FragmentActivity用getSupportFragment

 

Java基础 equals 和 ==

 2016/8/8 Monday morning

a.equals(b)  à 是判断字符串a和b是否相等

a == b       à 是判断a和b是否是同一个变量,即系统为这两个变量是否是分配的同一块内存

 

ScrollView中嵌套ListView,ListView显示不全的问题

2016/8/30 Tuesday afternoon

计算ListView的高度

public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        // pre-condition
        return;
    }

    int totalHeight = 0;
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
}

在ListView设置了adapter后,调用该方法,且listview的item设置必须是LinearLayout,因为其他layout没有重写onMeasure(),所以会在onMeasure()时抛出异常

 

截取字符串

2016/9/9 Friday morning

e.g.

"item": "[\"act\",\"obj\"]"

String item = data.get(position).getItem();
item = item.replace("[", "").replace("]", "").replace("\"", "");
String[] arrayStr = new String[]{};
arrayStr = item.split(",");
/* 输出字符数组的值 */
for (String s : arrayStr) {
    if (s.equals("act")) {
        mHolder.person_act.setText("人员活动");
    } else if (s.equals("obj")) {
        mHolder.obje.setText("物品");
    } else if (s.equals("case")) {
        mHolder.casse.setText("案事件");
    } else if (s.equals("vedio")) {
        mHolder.vedio.setText("视频监控");
    }
}

 

用gson解析该类型数据

String item = "[\"case\",\"vedio\"]";
List<String> itemList = new Gson().fromJson(item,new  TypeToken<List<String>>(){}.getType());
for (int i=0; i<itemList.size(); i++){
    Log.i("bz item","---------------- "+itemList.get(i));
}

 

ListView中item点击事件失效

2016/10/31 Monday morning

Item点击事件失效一般是因为布局中含有button、imagebutton等控件

解决方法:

在item的根布局上添加descendantFocusability="blocksDescendants"即可

descendantFocusability有三个属性:

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

通常情况下我们用到第三个属性

 

还有解决方法:

将button改为textview控件,imagebutton改为image。

在Android中,点击屏幕以后点击事件会根据你的布局来分配的,当你的ListView中还有button,点击事件第一优先分配给了ListView里的button,所以item的点击事件就失效了。

 

Button点击事件失效问题

2017/3/3 Friday afternoon

到现在还会被这个问题所难倒也是醉了

原因:

未得到控件

未注册点击事件(setOnClickListener)

Scrollview布局覆盖了button控件

通常点击事件失效是因为前两点,今日所遇到的正是由第3个原因所造成,ScrollView布局不知何时将我的button覆盖了,汗颜

 

Activity的四种launchMode

2018/5/2 Wednesday morning

Activity一共有以下四种launchMode:

1.Standard(默认的启动模式):每次跳转系统都会在task生成一个新的Activity实例,并且放于栈结构顶部,当我们按下后退键时才能看到原来的Activity实例。

这就是standrad启动模式,不管有没有已存在实例,都生成新的实例。

2. singleTop:如果发现有对应的activity位于栈顶,则重复利用不生成新的实例,反之若对应的activity不是位于栈顶,则重新生成新的实例。

3.singleTask:standard如果发现有对应的activity实例,则使此activity实例之上的其他activity实例统统出栈,使此activity成为栈顶对象,显示到幕前。

4.singleInstance:这种启动模式比较特殊,因为它会启用一个新的栈结构,将Acitvity放置于这个新的栈结构中,并保证不再有其他Activity实例进入。

 

去掉Button默认内边距

2018/5/30 Wednesday morning

android:minHeight="0dp"
android:minWidth="0dp"

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值