我使用ListView来实现一个时间轴.我启用了FastScroll并使用了SectionIndexer,以便用户可以拖动滚动条并查看显示的部分文本.
所有这些都是内置的UI的问题.显示部分文本的textview对我来说太小了,我试图显示05pm,对于textview(或其他UI?)来说太长了.
任何更简单的方法来解决这个问题?例如,一种方法我可以设置部分文本或textview布局的字体大小?
谢谢!
解决方法
查看AbsListView的源代码,您可以找到处理FastScroller的快速滚动机制的类. FastScroller实际上在画布上绘制了可绘制的图像,并将其提供给AbsListView,如此…
canvas.drawText(mSectionText,(int) (rectF.left + rectF.right) / 2 - hOff,(int) (rectF.bottom + rectF.top) / 2 + mOverlaySize / 4 - descent - vOff,paint);
上面的代码实际上将文本绘制在底部图像drawable之上,因此它不会尊重底部drawable的边界,这就是为什么文本实际上溢出而不被切断.至于为什么这样设计呢?我的猜测是,索引功能的意图主要是用于单字符如A,B,C等,因此快速滚动索引功能被设计为适合.
所以,为了给出一个明确的答案你的问题,真的没有办法改变文本大小或改变如何绘制文本,除非您修改AbsListView和FastScroller以满足您的需要.