牙叔教程 简单易学
使用场景
控制台最后一行显示不全.
比如控制台最底部的一条日志, 它是4行, 控制台只会显示2.5一行, 剩下的1.5行就不会显示出来,
除非你再打印一条日志把它顶上去
控制台最后一行显示不全, 问题截图
![](https://img.haomeiwen.com/i17665846/96b6a8db25b3332f.png)
优化后的效果展示
![](https://img.haomeiwen.com/i17665846/09302b37d2ec3f47.png)
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);
});
参考文章
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途
![](https://img.haomeiwen.com/i17665846/2093a2880ca886f1.jpg)
网友评论