如何在android中创建一个类似于视图的架子,在任何行中显示几本书?此外,它应具有水平和垂直功能,如月亮+阅读器应用程序.
我可以写一个水平移动的架子视图,但它不能完全发挥作用.我使用xml文件来查看包含图像,文本和按钮的项目.我写了一个类,扩展AdapterView为创建ListView我调用的自定义"shelf view".不幸的是,我的程序显示了一行,我不能将它用于多行.

问题 - 向下滚动会导致底部工作表滚动,而不是为 LazyColumn 提供滚动优先级(RecyclerView 没有此问题。它被 NestedScrollView 包裹)
我刚刚介绍了用 Compose LazyColumn 替换 CoordinatorLayout 内的 Recycler。协调器(作为底部工作表实现)本身可以在查看状态和展开状态之间自由滚动。我的问题是,当在 LazyColumn 中向下拖动项目区域时,底部工作表会滚动而不是 LazyColumn 。如果我在 LazyColumn 上先向上滚动,然后向下滚动(不释放),则 LazyColumn 会拾取滚动,并且滚动优先级将赋予 LazyColumn(预期行为)。
BottomSheetFragment
|-CoordinatorLayout
|--ConstraintLayout (BottomSheetBehavior)
|---MyListFragment
|----ComposeView
|-----Theme
|------Surface
|-------Box
|--------LazyColumn
Run Code Online (Sandbox Code Playgroud)
刚接触 Compose,所以我希望有人能告诉我如何纠正这种新的滚动行为?
**编辑 我通过切换协调器的 ^^ BottomSheetBehavior.isDragglable 来完成这项工作,但它确实需要我释放拖动,而不是从列表滚动平滑过渡到底部工作表滚动 - 任何人建议修复?:
fun MyUi(listener:Listener) {
val listState = rememberLazyListState()
LaunchedEffect(listState) {
listState.interactionSource.interactions.collect {
//at the top of the list so allow sheet scrolling
listener.allowSheetDrag(listState.firstVisibleItemScrollOffset == 0)
}
}
val nestedScrollConnection = remember {
object : NestedScrollConnection {
override …Run Code Online (Sandbox Code Playgroud) android vertical-scrolling android-jetpack-compose lazycolumn
我使用下面的CSS改变了我的讨论论坛的背景
http://forum.antinovaordemmundial.com
html {
background: url(http://antinovaordemmundial.com/mystuff/logo_blog.jpg) no-repeat center center fixed;
background-image: url(http://antinovaordemmundial.com/mystuff/logo_blog.jpg);
background-repeat-x: no-repeat;
background-repeat-y: no-repeat;
background-attachment: fixed;
background-position-x: 50%;
background-position-y: 50%;
background-origin: initial;
background-clip: initial;
background-color: initial;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
Run Code Online (Sandbox Code Playgroud)
图像为1600x711和88k.页面的滚动现在非常慢.CSS有问题还是图像应该以某种方式变小?
编辑:我尝试过更改为:
body {
color: #000;
font-family: Verdana, Arial, Sans-Serif;
font-size: 13px;
text-align: center; /* IE 5 fix */
line-height: 1.4;
background-attachment: fixed;
background-clip: initial;
background-color: #51010E;
background-image: url(http://antinovaordemmundial.com/mystuff/logo_blog.jpg);
background-origin: initial;
background-position: initial initial;
background-repeat: initial initial;
margin-bottom: 0;
margin-left: auto;
margin-right: auto; …Run Code Online (Sandbox Code Playgroud) 在iPhone上导航到这个小提琴并注意到即使有-webkit-overflow-scrolling:touch声明,"点击顶部"功能仍然有效.这是在运行iOS 6.1的iPhone 4和运行iOS 5.0.1的iPhone 4S上测试的.
此测试提出了一个问题:声明是否-webkit-overflow-scrolling:touch会影响iOS中的" 点按状态栏以滚动到顶部 "行为?
当滚动条移动时我必须移动div,但需要使用纯javascript,并且position:fixed将不适用于布局.div的原始poisition是相对于其他东西.是否使用onScroll等事件进行简单的实现,以检测页面向上或向下移动的像素数,并相应地更改div的位置.div只需要垂直移动.因此,如果我可以检测到页面移动了多少像素,我可以将其添加或减去div的位置.任何帮助是极大的赞赏 :-).
也许这是一个简单的修复,但它已经让我疯了很长时间所以我终于决定看看是否存在解决方案.
简而言之,我将大多数网页放在宽视口中.
例如,一个视口可能是1028px,我希望我的页面宽度只有960px.
所以我的CSS看起来像这样:
#pageWrapper { /* page width is 960 pixels */
margin:0 auto;
width:960px;
}
Run Code Online (Sandbox Code Playgroud)
没问题.
当我启动一个比页面高度更短的动态页面然后我的页面在屏幕底部下方展开(通过jQuery slideOut等)并导致垂直滚动条出现时,会出现问题.
最终在slideOut期间使页面闪烁,然后在slideIn期间向右闪烁.
有没有办法通过CSS强制20px右边距并仍然利用margin:0 auto;?
谢谢.
我有TableLayoutPanel用于动态创建AutoScroll = true的控件.添加新控件时,它工作正常.但是当我删除并且所有控件都可见时,可以看到垂直滚动.这里有一些截图:
预期/正确的滚动可见性:
可见性不正确:

有任何想法吗?
更新:这是一些代码
tableLayoutPanel1.SuspendLayout();
tableLayoutPanel1.RowCount = 0;
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.AutoScroll = true;
tableLayoutPanel1.Padding = new Padding(0, 0, SystemInformation.VerticalScrollBarWidth, 0);
foreach (var item in objects)
{
tableLayoutPanel1.RowCount++;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
tableLayoutPanel1.Controls.Add(CreateNewItem(item));
}
tableLayoutPanel1.RowCount++;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
tableLayoutPanel1.Controls.Add(CreateAddButton());
tableLayoutPanel1.ResumeLayout();
Run Code Online (Sandbox Code Playgroud)
以及删除代码
tableLayoutPanel1.SuspendLayout();
tableLayoutPanel1.Controls.Remove(item);
tableLayoutPanel1.RowStyles.RemoveAt(0);
tableLayoutPanel1.RowCount--;
tableLayoutPanel1.ResumeLayout();
Run Code Online (Sandbox Code Playgroud)
AutoSize为true,AutoSizeMode为GrowAndShrink
c# scrollbar tablelayoutpanel vertical-scroll vertical-scrolling
我想在垂直viewpager中实现recyclerview.我目前的布局如下所示
VerticalViewpager
- Fragment1
- ImageView
- Fragment2
- RecyclerView
Run Code Online (Sandbox Code Playgroud)
如果我从Fragment1滑动到Fragment2一切正常.我可以在recyclerview中上下滚动.如果我尝试滑动/滚动回Fragment1,则会出现此问题.
如果用户已滚动到recyclerview的顶部,我想将下一个"Up"-Scroll事件转发到垂直viewpager.我试过重写这个onInterceptTouchEvent方法,但遗憾的是仍然没有成功.有什么想法吗?谢谢你的帮助 :)
android scroll vertical-scrolling android-viewpager android-recyclerview
我正在构建一个左侧有一个列表的页面,以及一个右侧显示单个项目详细信息的容器.这是一个示例图像,显示页面布局和我要滚动的部分.

在左容器和右容器中,我需要在数据超出容器的视口高度时滚动.我只希望红色突出显示的容器滚动 - 外部蓝色容器是固定的,蓝色容器内的黄色部分是固定的.只有适用时,才应滚动红色容器的内容.
我已经设置了一个代码笔,我正在玩它并可以与你共享(应用程序本身就在防火墙后面,代码集是我能做的最好的).您在codepen上看到的是,当我设置它的高度时,我可以让容器滚动(在这种情况下,380px,这是关于屏幕上有多少空间).如果你移动示例代码集的容器,你会看到滚动区域保持固定(duh),如果你将可滚动容器的高度增加到380px以上,一旦你进入视口以下,滚动开始消失 - 在周围800px左右它完全消失了.
我到底错过了什么?蓝色容器应将其自身调整到视口底部,无论是800px高还是1600px高.然后红色容器的高度将填充蓝色容器内的可用高度,并在必要时滚动.
我真的很难过我在这里失踪的东西.
编辑:jQuery和javascript大小不是选项.这只能通过CSS实现,我只是在某个地方遗漏了一些属性并且难倒了.
编辑2:我尝试了建议的html(html:height:100%等).它在codepen中工作,但是当我在我的完整版本的网站上尝试它时,它不起作用.在此处的屏幕截图中,您可以看到蓝色高亮区域是有问题的滚动容器,右侧的白色条是滚动条(自定义样式背景),但没有实际滚动 - 只是条形背景.

我正在使用带有两个垂直方向的片段的 ViewPager2。当用户向下滑动到第二个片段时,有一个 RecyclerView 在同一垂直方向滚动内容。
问题是当我滚动 RecyclerView 的内容时,有时 ViewPager2 捕获滚动事件,有时 RecyclerView 捕获滚动事件。
我希望这样,当用户滚动到 RecyclerView 的顶部时,ViewPager 仅在用户到达 RecyclerView 内容的顶部时才滑回第一个片段。
我试过使用 recyclerView.isNestedScrollingEnabled = false,但运气不佳。我也尝试将 RecyclerView 放入 NestedScrollView,但不推荐这样做,因为 RecyclerView 然后创建它需要的数据集的每个 ViewHolder,这显然效率不高。
vertical-scrolling android-fragments android-recyclerview android-nestedscrollview android-viewpager2
android ×3
css ×3
html ×2
scroll ×2
background ×1
c# ×1
javascript ×1
lazycolumn ×1
listview ×1
scrollbar ×1