我想实现这样的布局:
在我显示多个 TextView 的位置,用户将能够水平滚动并且列表将对齐到中央项目(我将能够检索到)。
看起来我有几个选择,但没有一个令人满意。
首先,我研究了 HorizontalScrollView
,但它只进行滚动,不进行捕捉。
Gallery
已弃用,但看起来最有前途 - 我只需要覆盖适配器中的 getView
:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv = convertView == null ? new TextView(getActivity()) : (TextView) convertView;
tv.setText(getItem(position));
tv.measure(0, 0);
int width = tv.getMeasuredWidth();
tv.setLayoutParams(new Gallery.LayoutParams(width + 100, 100));
return tv;
}
其他可用的选项是 ViewPager
,但看起来 ViewPager 更喜欢与 ViewPager 本身一样宽的 View 。
使用Gallery
有什么问题吗?我真的不喜欢 Google 在没有提供等效替代品的情况下弃用 View,但我担心在未来的某些 Android 版本中它会消失。
最佳答案
据我所知,弃用类不会消失。它们只是不再受支持,所以如果类代码中存在错误,没有人会费心在未来版本的 API 中修复它。
如果 Gallery 无法正常工作,则网络上有几个水平 ListView 的实现 - 只需使用/扩展一个,这样您就可以得到类似于 smoothScrollToPosition(int position) 的东西。用于捕捉。
关于带有捕捉功能的 Android 水平文本轮播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583227/