以前,这是我的 DialogFragment 的布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".InfoDialog"
android:id="@+id/scrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- (More Views here) -->
</LinearLayout>
</ScrollView>
工作正常。但是,我需要使 textView1 可选。但是,当我向其中添加android:textIsSelectable="true"
属性时,显示对话框时 scrollView 会向下滚动一点。 (注意-我可以手动将其向上滚动到顶部,但这显然不是解决方案。)
我尝试将android:descendantFocusability="beforeDescendants"
添加到 scrollView ,但这没有用。
我也在onCreateDialog()
和onViewCreated()
方法中尝试过:
ScrollView scrollView = layoutView.findViewById(R.id.scrollView);
scrollView.fullScroll(ScrollView.FOCUS_UP);
scrollView.scrollTo(0, 0);
但这还是无效的-即,显示对话框后, scrollView 仍会向下滚动一点。
有什么想法吗?
更新:
在我的onCreateDialog()
末尾使用它:
ScrollView scrollView = layoutView.findViewById(R.id.scrollView);
scrollView.post(() -> {
scrollView.fullScroll(ScrollView.FOCUS_UP);
});
但是,这不是理想的解决方案(尤其是您可以在屏幕上看到正在执行的滚动)。有没有更好的解决方案,最好是xml?