布局分析父控件字体红色高亮

This commit is contained in:
抠脚本人
2023-07-12 02:35:27 +08:00
parent 72bccb2525
commit 76163c796e

View File

@@ -36,7 +36,7 @@ public class LayoutHierarchyView extends MultiLevelListView {
public interface OnItemLongClickListener { public interface OnItemLongClickListener {
void onItemLongClick(View view, NodeInfo nodeInfo); void onItemLongClick(View view, NodeInfo nodeInfo);
} }
private final Map<NodeInfo,ViewHolder> nodeMap = new LinkedHashMap<>();
private Adapter mAdapter; private Adapter mAdapter;
private OnItemLongClickListener mOnItemLongClickListener; private OnItemLongClickListener mOnItemLongClickListener;
private final AdapterView.OnItemLongClickListener mOnItemLongClickListenerProxy = new AdapterView.OnItemLongClickListener() { private final AdapterView.OnItemLongClickListener mOnItemLongClickListenerProxy = new AdapterView.OnItemLongClickListener() {
@@ -107,17 +107,41 @@ public class LayoutHierarchyView extends MultiLevelListView {
} }
private void setClickedItem(View view, NodeInfo item) { private void setClickedItem(View view, NodeInfo item) {
mClickedNodeInfo = item;
if (mClickedView == null) { if (mClickedView == null) {
mOriginalBackground = view.getBackground(); mOriginalBackground = view.getBackground();
} else { } else {
mClickedView.setBackground(mOriginalBackground); mClickedView.setBackground(mOriginalBackground);
drawListItem(mClickedNodeInfo, false);
} }
view.setBackgroundColor(mClickedColor); view.setBackgroundColor(mClickedColor);
drawListItem(item, true);
mClickedNodeInfo = item;
mClickedView = view; mClickedView = view;
invalidate(); invalidate();
} }
private void drawListItem(NodeInfo info, Boolean draw) {
ArrayList<ViewHolder> list = new ArrayList<>();
NodeInfo currentInfo = info;
while (true) {
currentInfo = currentInfo.getParent();
if (currentInfo == null) break;
ViewHolder vh = nodeMap.get(currentInfo);
list.add(vh);
}
//todo选用能适应深色模式的字体颜色
//fixme列表滑动时listview数据错乱
if (draw) {
for (ViewHolder vh : list) {
vh.nameView.setTextColor(Color.RED); // 设置字体颜色为红色
}
} else {
for (ViewHolder vh : list) {
vh.nameView.setTextColor(Color.BLACK); // 设置字体颜色为红色
}
}
}
private void initPaint() { private void initPaint() {
mPaint = new Paint(); mPaint = new Paint();
mPaint.setColor(Color.DKGRAY); mPaint.setColor(Color.DKGRAY);
@@ -228,7 +252,8 @@ public class LayoutHierarchyView extends MultiLevelListView {
} else { } else {
viewHolder = (ViewHolder) convertView.getTag(); viewHolder = (ViewHolder) convertView.getTag();
} }
//对于id,desc,text,clickable,longClickable不为空的显示信息 nodeMap.put(nodeInfo,viewHolder);
//对于id,desc,text,clickable,longClickable不为空的显示额外信息
viewHolder.nameView.setText(extraInfo(nodeInfo)); viewHolder.nameView.setText(extraInfo(nodeInfo));
viewHolder.nodeInfo = nodeInfo; viewHolder.nodeInfo = nodeInfo;
if (viewHolder.infoView.getVisibility() == VISIBLE) if (viewHolder.infoView.getVisibility() == VISIBLE)
@@ -275,6 +300,12 @@ public class LayoutHierarchyView extends MultiLevelListView {
if (nodeInfo.getDesc() != null) { if (nodeInfo.getDesc() != null) {
info.add("desc=" + nodeInfo.getDesc()); info.add("desc=" + nodeInfo.getDesc());
} }
if (nodeInfo.getClickable()) {
info.add("clickable");
}
if (nodeInfo.getLongClickable()) {
info.add("longClickable");
}
//字符串拼接 //字符串拼接
String others = String.join(", ", info); String others = String.join(", ", info);
if (!others.isEmpty()) { if (!others.isEmpty()) {