我已经搜索并搜索找到如何将垂直(或水平)滚动条添加到 TextView 而不必使用 XML 来添加行的答案:android:scrollbars="vertical"。
必须有一种方法可以以编程方式执行此操作,而无需将其粘贴在另一个 ScrollView 中。
我刚刚发现如何以及因为我对此感到兴奋并想帮助其他遇到相同问题的人,这里是:
我想让 ScrollView 的滚动条比默认值更宽,但我看不到任何width属性,即使是ScrollViewStyle元素frame组件的一部分。
我在布局中使用 ScrollView,如下所示:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- my rest xml code-->
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
然后我的布局预览显示如下:
为什么布局看起来像这样?!
我在我的集合视图上启用了分页,并遇到了每次滑动的第一个问题,不是在不同的单元格上停止,而是在页面上停止。
然后我尝试在 ScrollViewWillEndDecelerating 中输入代码并手动处理分页。但是我的问题是更改集合视图 ContentOffset 或滚动到 Point 都不起作用,除非在 LayoutSubiews 中调用。这是它们影响 CollectionView 的唯一地方
我的集合视图中的每个单元格都是全屏的。我处理布局子视图中的单元格大小。
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if let layout = customCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
let itemWidth = view.frame.width
let itemHeight = view.frame.height
layout.itemSize = CGSize(width: itemWidth, height: itemHeight)
layout.invalidateLayout()
}
let ip = IndexPath(row: 2, section: 0)
view.layoutIfNeeded()
customCollectionView.scrollToItem(at: ip, at: UICollectionViewScrollPosition.centeredVertically, animated: true)
let point = CGPoint(x: 50, y: 600)
customCollectionView.setContentOffset(point, animated: true)
}
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let pageHeight = …Run Code Online (Sandbox Code Playgroud) 我有一个图像,我想成为设备屏幕的全宽。
仅使用一个视图我就可以实现:
<View style={{flex:1}}>
<Image resizeMode="contain" style={{flex: 1, height: undefined, width: undefined}} source={this.props.images.infoImage} />
</View>
Run Code Online (Sandbox Code Playgroud)
将此更改为 ScrollView 会导致图像完全停止渲染:
<ScrollView style={{flex:1}}>
<Image resizeMode="contain" style={{flex: 1, height: undefined, width: undefined}} source={this.props.images.infoImage} />
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我发现如果我在图像上设置一个高度,它会呈现......但我希望图像动态响应设备的大小。
如何在不声明明确高度的情况下解决这个问题?
我已经创建了一个可扩展的ListView内ScrollView。当我想在可扩展 ListView 中滚动时,我必须选择它并在滚动时按住它,否则整个页面都会滚动。这是我的代码
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.kitkat.crossroads.JobBidsFragment">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewJobInformation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/bebasneueregular"
android:text="Job Information"
android:textAlignment="center"
android:textSize="30dp"
tools:layout_editor_absoluteX="163dp"
tools:layout_editor_absoluteY="16dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:orientation="horizontal">
<TextView
android:id="@+id/viewName"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/textViewJobName1"
android:layout_alignTop="@id/textViewJobName1"
android:background="#FFFFFFFF"
android:gravity="center_vertical"
android:paddingVertical="10dp"
android:text=" Job:"
android:textAlignment="viewStart"
android:textColor="#FF000000"
android:visibility="visible" />
<TextView
android:id="@+id/textViewJobName1"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:paddingVertical="10dp"
android:text="text"
android:textColor="#FF000000"
android:visibility="visible" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:orientation="horizontal">
<TextView
android:id="@+id/viewDesc" …Run Code Online (Sandbox Code Playgroud) 我想要一个ScrollView你可以在用户滚动时知道内容框架变化的地方(类似于didScrollUIKit 中的委托UIScrollView)。
这样,您就可以根据滚动行为执行布局更改。
使用 Swift 5.5、Xcode 13.0、iOS 15.0.1、
由于 Apple 在 SwiftUI 的 ScrollViews 方面做得还不够好(还?),所以我必须实现自己的可缩放 ScrollView。请参阅下面的代码。
我让它在 iOS13 和 iOS14 上成功运行 - 但现在更新到iOS 15.0.1我不得不意识到它不再工作了!
错误信息如下:
objc[10882]: Cannot form weak reference to instance (0x1078d5540) of class _TtGC7SwiftUI19UIHostingControllerGVS_15ModifiedContentVS_5ImageVS_18_AspectRatioLayout__. It is possible that this object was over-released, or is in the process of deallocation.
Run Code Online (Sandbox Code Playgroud)
dyld4 config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib
(lldb)
Run Code Online (Sandbox Code Playgroud)
我将所有内容都放在 SwiftUIPager 中,并且在滑动时问题发生在最后一页。但是,我不认为这是寻呼机的错误,因为我可以用普通的 ImageView 替换 ZoomableScrollView 并且一切正常。因此我认为苹果在他们的 UIViewRepresentable 中搞砸了一些东西。但也许你可以告诉我更多?
这是我的 ZoomableScrollView 的完整代码:
import SwiftUI
struct ZoomableScrollView<Content: View>: UIViewRepresentable {
@Binding var didZoom: Bool …Run Code Online (Sandbox Code Playgroud) 我目前正在开发使用情节提要开发的应用程序。
我试图在开始之前以编程方式将视图控制器添加到分页滚动视图中,然后再在情节提要中添加其他2个视图。
添加了视图控制器,但宽度稍大,并进入了中间视图。
let vc = Vc()
scrollView.addSubview(vc.view)
Run Code Online (Sandbox Code Playgroud) 我正在创建一个ProgressBar放置在LinearLayout的垂直中心(其他布局不起作用;我需要使用LinearLayout).这是一些代码:
LinearLayout linearLayout = new LinearLayout(context);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
linearLayout.setLayoutParams(layoutParams);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setGravity(Gravity.CENTER);
//add progressbar
ProgressBar progressBar = new ProgressBar(context);
progressBar.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
linearLayout.addView(progressBar);
Run Code Online (Sandbox Code Playgroud)
我有一个ContainerView,它将保存上面创建的LinearLayout.像这样的东西:
public class ContainerView extends ScrollView {
public ContainerView(Context context) {
super(context);
initView(context);
}
private void initView(Context context){
addView(linearLayout); //which is created in the snippet above
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用LinearLayout扩展ContainerView,一切正常.
如果我使用ScrollView扩展ContainerView,则ProgressBar水平居中但不垂直居中.
这种双重行为背后的原因是什么?我的目标是在下载一些数据时显示ProgressBar; 下载数据后,我需要在LinearLayout中显示它.
(注意:使用ScrollView的原因是下载的数据可能太大而不适合小屏幕.这可能看起来像ListView的用例,但还有一些其他原因阻止我使用ListView.)
android scrollview android-layout layout-gravity android-gravity
scrollview ×10
android ×4
scroll ×2
swift ×2
swiftui ×2
xml ×2
image ×1
ios ×1
javascript ×1
kotlin ×1
layout ×1
macos ×1
paging ×1
qml ×1
qt ×1
react-native ×1
textview ×1
uiscrollview ×1