安卓权威指南(第三版)24章挑战练习

    (题目)前面,为在启动器应用中显示各个activity的名称,你使用了 ResolveInfo.loadLabel(...)
方法。 loadIcon() 是 ResolveInfo 类的另一个方法,可以用它为每个应用加载显示图标。作为

练习,请给NerdLauncher应用中显示的所有应用添加图标。



emmm...上面就是题目啦!我们不在叙述之前的操作,按着书来一步一步应该是没有问题,就直接进入主题。

先放图


看到这个,我首先想到这是动态图片加载(程序运行了才可以得到图片)啊,,我们应该更改layout,增加一个ImageView视图用来显示图片。但是之前书上没有新建视图啊,于是就去真正管理试图的ActivityAdapter类中去寻找绑定视图的地方。


在onCreateViewHolder方法中找到了以下这行

View view = layoutInflater

.inflate(android.R.layout.simple_list_item_1, parent, false);


原来是androidstudio自带的视图

ctrl+点击simple_list_item_1,跳转过去,ctrl+a   ctrl+c   ctrl+v 行云流水的操作,在layout下创建了一个layout视图。

改了个名字。(添加了ImageView后,笔者就没了思路,只好转变思路)


直接为TextView增加一个图片不就得了!很轻松啊这样

于是去ActivityHolder类中添加了如下语句:

private class ActivityHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    private ResolveInfo mResolveInfo;
    private TextView mNameTextView;
    public ActivityHolder(View itemView) {
        super(itemView);
        mNameTextView = (TextView) itemView;
        mNameTextView.setOnClickListener(this);
    }
    public void bindActivity(ResolveInfo resolveInfo) {
        mResolveInfo = resolveInfo;
        PackageManager pm = getActivity().getPackageManager();
        String appName = mResolveInfo.loadLabel(pm).toString();
     //获取图片
    Drawable appIcon = mResolveInfo.loadIcon(pm);
        mNameTextView.setText(appName);
    //为TextView设置图片
     mNameTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,appIcon,null);

    }

mNameTextView.setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,appIcon,null);

此方法四个参数都是drawable类型分别为TextView 的开始、上、结束、下 四个位置放置图片!


第一个方法还未完善,待完善之后再修改博客。不喜勿喷,喷了我也不理你~~嘻嘻。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值