牙叔教程 简单易学
使用场景
控制台最后一行显示不全.
比如控制台最底部的一条日志, 它是4行, 控制台只会显示2.5一行, 剩下的1.5行就不会显示出来,
除非你再打印一条日志把它顶上去
控制台最后一行显示不全, 问题截图
优化后的效果展示
autojs版本
8.8.2-0
优化方法
第一种:
加一个footView, 把日志顶上去
第二种:
新的日志生成后, 补一个滚动动作
以上两种方法都是在adapter中修改
源码
第一种方法: 加一个footView
let boxXml = ( <TextView id="content" layout_width="match_parent" layout_height="wrap_content" textIsSelectable="true" textSize="19sp" textColor="#ffffff" margin="6" ></TextView> ); let footXml = ( <TextView id="foot" layout_width="match_parent" layout_height="wrap_content" textIsSelectable="true" textSize="19sp" margin="6" ></TextView> ); ui.run(function () { let recycleview = consoleView; let FOOT_TYPE = 1111; let NORMAL_TYPE = 2222; function createAdapter(mLogEntries) { return RecyclerView.Adapter({ onCreateViewHolder: function (parent, viewType) { // 视图创建 let view; let holder; if (viewType === FOOT_TYPE) { view = ui.inflate(footXml, parent, false); } else { view = ui.inflate(boxXml, parent, false); } holder = JavaAdapter(RecyclerView.ViewHolder, {}, view); return holder; }, onBindViewHolder: function (holder, position) { // 数据绑定 if (holder.itemViewType === FOOT_TYPE) { // holder.itemView.setText("i am footView"); } else { let logEntry = mLogEntries.get(position); holder.itemView.setText(logEntry.content); } }, getItemCount: function () { return mLogEntries.size() + 1; }, getItemViewType: function (position) { if (position == this.getItemCount() - 1) { return FOOT_TYPE; } else { return NORMAL_TYPE; } }, }); } let newAdapter = createAdapter(mLogEntries); recycleview.setAdapter(newAdapter); });
第二种方法: 补一个滚动动作
ui.run(function () { let recycleview = consoleView; function createAdapter(mLogEntries) { return RecyclerView.Adapter({ onCreateViewHolder: function (parent, viewType) { // 视图创建 let view; let holder; view = ui.inflate(boxXml, parent, false); holder = JavaAdapter(RecyclerView.ViewHolder, {}, view); return holder; }, onBindViewHolder: function (holder, position) { // 数据绑定 let logEntry = mLogEntries.get(position); holder.itemView.setText(logEntry.content); // 在这里补一个滚动动作 ui.post(() => { recycleview.scrollToPosition(position); }, 1); }, getItemCount: function () { return mLogEntries.size(); }, }); } let newAdapter = createAdapter(mLogEntries); recycleview.setAdapter(newAdapter); });
参考文章
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途