本文实例讲述了Android编程实现的简易路径导航条功能。分享给大家供大家参考,具体如下:
这里要实现的是如图所示的路径导航条, 类似于文件管理器的效果。
该导航条包含三个功能:
支持追加任意个子路径(文字一行写不下时可左右滑动);
2. 支持返回到上一个路径;
3. 支持点击中间的某个路径回到指定位置。
代码很简单,已封装成自定义View, 如下:
PathTextView.Java
public class PathTextView extends LinearLayout { private TextView mTextView; private HorizontalScrollView hsView; private OnItemClickListener mListener; //保存每一个路径的id和名称 private LinkedList<PathItem> pathItemList; //可点击部门文本颜色 private static final int TEXT_COLOR = Color.parseColor("#48a0c7"); //分隔符 private static final String DIV_STR = " - "; public PathTextView(Context context) { super(context); } public PathTextView(Context context, AttributeSet attrs) { super(context, attrs); View root = LayoutInflater.from(context).inflate(R.layout.simple_tv, this, true); hsView = (HorizontalScrollView) root.findViewById(R.id.path_hs); mTextView = (TextView) root.findViewById(R.id.path_tv); mTextView.setMovementMethod(LinkMovementMethod.getInstance()); mTextView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; } }); pathItemList = new LinkedList<>(); } public void initRoot(String text) { mTextView.append(createSpannableString(-1, text)); pathItemList.addLast(new PathItem(-1, text)); } public void append(long id, String text) { mTextView.append(DIV_STR); mTextView.append(createSpannableString(id, text)); pathItemList.addLast(new PathItem(id, text)); //HorizontalScrollView滑动到最右边 hsView.postDelayed(new Runnable() { @Override public void run() { hsView.fullScroll(HorizontalScrollView.FOCUS_RIGHT); } }, 100); } public void backParent() { int lastItemLength = pathItemList.removeLast().text.length(); CharSequence oldCs = mTextView.getText(); mTextView.setText(oldCs.subSequence(0, oldCs.length() - lastItemLength - DIV_STR.length())); } private SpannableString createSpannableString(long id, String text) { SpannableString spStr = new SpannableString(text); ClickableSpan clickSpan = new MyClickableSpan(id); spStr.setSpan(clickSpan, 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); spStr.setSpan(new ForegroundColorSpan(TEXT_COLOR), 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); return spStr; } private class MyClickableSpan extends ClickableSpan { private long id; MyClickableSpan(long id) { super(); this.id = id; } @Override public void onClick(View widget) { //更新当前路径 int backCount = 0; while (pathItemList.getLast().id != id) { backParent(); backCount++; } //回调 if (mListener != null && backCount > 0) { mListener.onClick(id, backCount); } } } private class PathItem { private long id; private String text; private PathItem(long id, String text) { this.id = id; this.text = text; } } public interface OnItemClickListener { void onClick(long currentId, int backCount); } public void setOnItemClickListener(OnItemClickListener listener) { this.mListener = listener; }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android编程实现的简易路径导航条功能示例
后端开发2023-05-31
Vue 编程式路由导航的实现示例
后端开发2024-04-02
Android编程实现的自定义弹窗(PopupWindow)功能示例
后端开发2022-06-06
Android编程基于自定义View实现绚丽的圆形进度条功能示例
后端开发2022-06-06
Android编程实现对电池状态的监视功能示例
后端开发2022-06-06
Android编程实现图片的上传和下载功能示例
后端开发2022-06-06
Android编程实现的首页左右滑动切换功能示例
后端开发2023-05-30
Android编程实现多列显示的下拉列表框Spinner功能示例
后端开发2022-06-06
Android编程实现通讯录中联系人的读取,查询,添加功能示例
后端开发2023-05-31
Android编程实现支持拖动改变位置的图片中叠加文字功能示例
后端开发2022-06-06
咦!没有更多了?去看看其它编程学习网 内容吧