我正在使用TableLayout。对于此布局,我需要同时进行水平和垂直滚动。默认情况下,我能够在视图中进行垂直滚动,但是水平滚动不起作用。
我正在使用Android SDK 1.5 r3。我已经尝试过了android:scrollbars="horizontal"
。
我在一些论坛上读到,在纸杯蛋糕更新中,可以水平滚动。
如何使布局在两个方向上滚动?
Answers:
我能够找到一种实现两种滚动行为的简单方法。
这是它的xml:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:scrollbars="vertical">
<HorizontalScrollView
android:layout_width="320px" android:layout_height="fill_parent">
<TableLayout
android:id="@+id/linlay" android:layout_width="320px"
android:layout_height="fill_parent" android:stretchColumns="1"
android:background="#000000"/>
</HorizontalScrollView>
</ScrollView>
ScrollView
使用ListView
。这是因为其中ListView
有大量的优化无法与周围环境完美配合ScorollView
。此处发布的答案未使用ListView
,因此链接的参数无关紧要。
为时已晚,但我希望您的问题可以通过此代码得到快速解决。无需执行任何其他操作,只需将您的代码放在scrollview下面。
<HorizontalScrollView
android:id="@+id/scrollView"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
//xml code
</ScrollView>
</HorizontalScrollView>
在这篇android垂直和水平Scrollview中,他们讨论了一个可能的解决方案,并引用:
马特·克拉克(Matt Clark)已基于Android来源构建了一个自定义视图,它似乎可以完美运行:http : //blog.gorges.us/2010/06/android-two-Dimension-scrollview
请注意,该页面中的类存在一个错误,该错误会计算视图的水平宽度。评论中有Manuel Hilty的修复程序:
解决方案:将第808行的语句替换为以下内容:
final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.leftMargin + lp.rightMargin, MeasureSpec.UNSPECIFIED);
用这个:
android:scrollbarAlwaysDrawHorizontalTrack="true"
例:
<Gallery android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbarAlwaysDrawHorizontalTrack="true" />
由于其他解决方案已经过时,或者工作不佳或根本无法工作,因此,我修改了NestedScrollView
,它是稳定,现代的,并且具有滚动视图中您所期望的一切。水平滚动除外。
这是仓库:https : //github.com/ultimate-deej/TwoWayNestedScrollView
NestedScrollView
对于绝对必要的原始期望,我没有做任何更改,也没有“改进” 。该代码基于androidx.core:core:1.3.0
,这是撰写本文时的最新稳定版本。
以下所有作品:
NestedScrollView
)您可以使用下面的代码来做到这一点
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
</ScrollView>
</HorizontalScrollView>