是否有可能使ListView水平?我使用图库视图完成了此操作,但所选项目会自动出现在屏幕的中心。我不希望选中的项目位于我点击的同一位置。我该如何纠正这个问题?我的想法是用水平滚动来设置ListView。分享你的想法?
当前回答
Paul没有费心去修复他的库中的bug或接受用户的修复。这就是为什么我建议另一个具有类似功能的库:
https://github.com/sephiroth74/HorizontalVariableListView
更新:2013年7月24日作者(sephiroth74)发布了基于android 4.2.2 ListView代码的完全重写版本。我必须说,它没有所有的错误,以前的版本有和伟大的工作!
其他回答
有一个很棒的库,叫做TwoWayView,它很容易实现,只需要将项目库包含到你的工作空间中,并将其作为库项目添加到你的原始项目中,然后遵循以下步骤,这是最初在这里提到的:
首先,让我们添加一个样式来指示ListView的方向 (水平或垂直)in (res/values/styles.xml):
<style name="TwoWayView">
<item name="android:orientation">horizontal</item>
</style>
然后,
在你的布局XML中,使用下面的代码来添加TwoWayView:
<org.lucasr.twowayview.TwoWayView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/lvItems"
style="@style/TwoWayView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="false"
tools:context=".MainActivity" />
最后,声明它并像任何常规的ListView一样处理它:
TwoWayView lvTest = (TwoWayView) findViewById(R.id.lvItems);
ListView的所有方法将在这里照常工作,但只有一个区别,我注意到,这是设置选择模式时,方法setChoiceMode不接受int值,而是从enum称为ChoiceMode的值,所以list_view.setChoiceMode(ListView. choice_mode_single);将lvTest.setChoiceMode(choicmode . single);//或多重或无。
为了找到解决这个问题的办法,我做了很多研究。简短的回答是,没有好的解决方案,除非重写私有方法之类的东西。我发现最好的方法是自己从头开始通过扩展AdapterView来实现它。这很悲惨。请看我关于水平listview的SO问题。
你总是可以创建你的textviews等动态和设置你的onclicklistener,就像你会做一个适配器
我在自己的一个项目中也做了同样的事情,最后我也写了自己的项目。我称之为HorzListView现在是我的开源Aniqroid库的一部分。
http://aniqroid.sileria.com/doc/api/(在底部寻找下载或使用谷歌代码项目查看更多下载选项:http://code.google.com/p/aniqroid/downloads/list)
类文档在这里:http://aniqroid.sileria.com/doc/api/com/sileria/android/view/HorzListView.html
我在我的项目中使用了水平列表视图链接,我得到了很好的结果。我最初使用devsmart库,但它给了我一些问题。所以使用水平列表视图链接的最佳方式,因为它恢复了我的问题,而且我最近在谷歌PlayStore上使用这个库推出了我的应用程序,并得到了用户的良好响应。所以我建议你使用上面提到的相同的库来水平显示listview。享受:)
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件