android - 滚动后 GridView 元素随机重新定位

标签 android android-layout android-gridview

所以,我的应用程序上的 GridView 遇到了一个非常奇怪的问题。

我想要做的非常简单:我只想获取已安装应用程序的列表(a-la 应用程序抽屉)并在 GridView 中按字母顺序显示它们。

它工作得很好,它们都显示得很好,但是当我向下滚动查看更多应用程序并向上滚动时,顶部的应用程序会稍微偏移。更准确地说,垂直方向,每次我向下滚动超过 1-2 行并一直向上滚动时都会发生这种情况。

此外,有时我会滚动回到顶部,它会不断滚动越过顶部的应用程序而被遗忘,并且不会让我向下滚动。我不确定这些问题是否相关,但我确实想解决这两个问题。单击应用程序中的一项或切换窗口后,gridView 将完全重置为正常状态。

这只是我使用 android 布局等的第二天,尽管我之前已经进行了很长一段时间的 Java 编程,所以我可能会遗漏一些东西,但我对此并不完全陌生。

我在网上查找过,但找不到可行的答案,我已经尝试了找到的所有答案,现在我刚刚遇到我已经在代码中实现的解决方案,所以我不知道除了这里还能去哪里。

我也不确定要发布代码的哪一部分来解决这个问题,并且我不想将其与我的每个相关文件一起变成一堵巨大的文本墙,所以我将不胜感激如果有人能指导我展示什么内容,那就太好了。

我将从我的 GridView 布局、我的单独单元格布局和我的适配器的 getView 方法开始,因为这些似乎是我找到的大多数解决方案被引导到的地方。如果您需要更多我的代码,请告诉我。

布局网格

  <GridView
    android:id="@+id/gridView1"
    android:layout_width="match_parent"
    android:layout_height="488dp"
    android:numColumns="5"
    android:textAlignment="center"
    android:verticalSpacing="5dp" >

  </GridView>

</LinearLayout>

布局应用程序

  <ImageView
      android:id="@+id/ivIcon"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginRight="5dip"
  android:scaleType="center"
  android:adjustViewBounds="true"
  />

  <TextView
      android:id="@+id/tvName"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:gravity="center_vertical"         
  />


</LinearLayout>

获取 View

public View getView(int position, View convertView, ViewGroup parent) {
  View v;
  if(convertView == null){
    v = LayoutInflater.from(mContext).inflate(R.layout.layout_app, null);
   //mContext is defined in the constructor for my Adapter
  }else{
    v = convertView;
  }

  ImageView icon = (ImageView)v.findViewById(R.id.ivIcon);
  TextView name = (TextView)v.findViewById(R.id.tvName);

  icon.setImageDrawable(getItem(position).getIcon());
  name.setText(getItem(position).getName()); 
  //getIcon and getName are from a custom App class made to store app info.
  return v;
}

我有它的图片,但由于我的声誉,我不允许我发布它们或提供所有图片的链接,所以如果您想具体查看某些内容,请询问我。

P.S.:我遇到的另一个小问题是,某些图标似乎没有完全缩小到 ImageView 的大小,但据我所知,这完全无关,也不是本文的重点。如果你愿意的话,你也可以帮助我:P

最佳答案

我明白了,尽管我不太清楚为什么会发生这种情况。显然,由于我没有对各个单元格进行硬编码高度,因此它们会根据周围的文本进行调整并更改大小,从而更改其他单元格的位置。我仍然不知道为什么会发生整个过度滚动的事情,我认为这只是 gridview 的一个错误,但我觉得很奇怪,没有人提到它。哦,好吧...

关于android - 滚动后 GridView 元素随机重新定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24420844/

相关文章:

android - 在Android上检测wifi IP地址?

java - 应用程序在从 Android Studio 运行时工作正常,但在安装签名的 apk 时崩溃

android - ScrollView 不会滚动

android - 适用于所有安卓设备的响应式设计

android - listview 显示顺序错误

java - gridview 列中的自动间距?

android - Google 云打印应用的打印 Intent

java - 解码南非 za 驾驶执照

android - 具有两列和自动调整大小的图像的 Gridview

android - 使用 StickyGridHeaders