当前位置: 首页 > 面试题库 >

Android ScrollView并不是从顶部开始,而是从GridView的开始

淳于熙云
2023-03-14
问题内容

我的ScrollView出现问题,其中包含个性化的GridView和其他视图视图。第一次启动Activity时,ScrollView从其顶部开始,但是如果我再次访问Activity,则ScrollView从头开始我将在[此链接中](http://codingdict.com/questions/136414找到的类ExpandableHeightGridView 用于我的GridView。活动布局的xml代码是以下代码:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollViewLuogo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#fff" >

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="150dp"
            android:layout_height="100dp"
            android:layout_marginLeft="14dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:adjustViewBounds="true"
            android:maxHeight="200dp"
            android:maxWidth="200dp"
            android:scaleType="fitXY"
            android:src="@android:drawable/ic_menu_gallery" />

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/nomeTVActivityLuogo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:textSize="17sp"
                android:textColor="#005788" />

            <TextView
                android:id="@+id/indirizzoTVActivityLuogo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/linearLayout2"
        android:layout_marginTop="10dp"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageViewMappaLuogo"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="14dp"
            android:layout_marginRight="14dp"
            android:layout_marginTop="5dp"
            android:scaleType="fitXY"
            android:src="@drawable/sfondo_mappa" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="14dp"
            android:text="Immagini"
            android:textColor="#97d6f9" />

        <View
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:layout_marginLeft="14dp"
            android:layout_marginRight="14dp"
            android:layout_marginTop="5dp"
            android:background="#97d6f9" />

        <com.example.mappine.ExpandableHeightGridView
            android:id="@+id/gridViewLuogo"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:numColumns="3" >
        </com.example.mappine.ExpandableHeightGridView>

    </LinearLayout>

</RelativeLayout>

我试过使用代码,scrollView.fullScroll(ScrollView.FOCUS_UP);但是没有用,即使scrollView.scrollTo(0, 0);我也没有成功。唯一有效的代码是:

    scrollView.post(new Runnable() 
      { 
         public void run() { 
             scrollViewLuogo.fullScroll(ScrollView.FOCUS_UP); 
         } 
      });

但是它使从GridView的顶部到屏幕顶部的动画快速播放,我不喜欢它。

有什么建议吗?


问题答案:

解:

好的,很抱歉,如果回复太晚,但我偶然发现了相同的问题(只是我改用ListView),并且经过反复试验, 发现了解决方法

基本上,问题在于,当您“ hack”并使用 ExpandableHeightGridView 调整其内容的大小时,GridView /
ListView子级会自动请求父焦点(ScrollView),这种情况会在呈现布局后发生,因此尝试滚动时会看到该动画使用scrollTo()(可能会创建AFTER布局,并调整AFTER
gridView的大小,因此任何通用回调都无法以编程方式处理此问题)。

因此,我发现的最简单的解决方案是使用以下命令简单地禁用ListView / GridView上的focusable属性:

listView.setFocusable(false);

这样,当您第一次进入活动时,焦点将默认并且不依赖于Listview / GridView。

而且一切正常=)



 类似资料:
  • 我在NestedScrollview中有一个回收器视图...除了一个thig,一切都正常。我在NestedScrollview中总共有三个视图,前两个是LinearLayout,然后是回收器视图。当我运行我的应用程序时,活动不会显示前两个布局,它从回收器视图的顶部开始。 如何显示我的布局: 它应该如何显示: 我正在加载此enite布局下的一个视图寻呼机和我的视图寻呼机是一个协调器布局的孩子。 我的

  • 我的应用程序具有导航和UITableView。我为我的桌面视图设置背景色。看下面的图片。我不明白为什么第一个单元格不是从UITableView的顶部开始的。当我在Xcode中使用View Debbuger时,TableViewWrapperView在UITableView中未被填充。 我已经搜索过很多次了。我删除了检查并设置tableview的。最后我做了一个新项目,又做了一次,但我做不到。 我如

  • 问题内容: 我不确定这是否可行,但是我认为使用CSS转换创建一个效果是很酷的,其中div从其中心扩展到预定的高度和宽度,而不仅仅是从左上角扩展。 例如,如果我有demo 和(为简洁起见,省略了供应商前缀) 悬停时,这会将方块向右扩展并向下扩展至100px。 我希望它从中间扩展。 我知道我可能会使用demo,但这并不能真正为我提供非常“像素完美”的布局(因为它基于百分比),并且也不会影响周围的布局(

  • 我有一个JavaFX项目,其中有几个。fxml文件。我曾经通过右键单击这些文件并选择“使用SceneBuilder打开”来打开这些文件。可能在一些操作系统维护之后,SceneBuilder不再启动。没有错误消息出现,只是什么也没有发生。我在Xubuntu16.04下工作,在日食霓虹和日食氧气上有相同的行为,后者有新的安装。SceneBuilder路径在窗口->首选项->JavaFX->SceneB

  • 问题内容: 我有一个LONG .txt文件,其中包含将近6000行!有时我需要检索信息。在5000行中。是否可以从5000行开始读取而不是从头开始? 谢谢。 问题答案: 6000条线长与短取决于平均线长。即使每行100个字符,这也不算长。 不过,如果您知道5000行从哪里开始,那么您可以从5000行读取。不幸的是,大多数时候您必须阅读第1至4999行才能找到答案。

  • 将macOS升级到Sierra后,当我使用launchctl load启动Jenkins时,我无法连接到localhost:8080。如果我再次调用launchctl load,我会看到响应“服务已加载”。默认位置/var/log/jenkins/(如jenkins ci.plist中设置的)没有日志文件。我还试图创造詹金斯。在那里登录并发送给jenkins用户,但仍然没有打印任何内容。 如果我尝