标签: android-gridview

GridLayout(不是GridView)如何均匀地拉伸所有孩子

我希望有一个带有按钮的2x2网格.这只是ICS所以我试图使用给定的新GridLayout.

这是我的布局的XML:

 <?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/favorites_grid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff00"
    android:rowCount="2"
    android:columnCount="2">
  <Button
      android:text="Cell 0"
      android:layout_row="0"
      android:layout_column="0"
      android:textSize="14dip" />
  <Button
      android:text="Cell 1"
      android:layout_row="0"
      android:layout_column="1"
      android:textSize="14dip" />

  <Button
      android:text="Cell 2"
      android:layout_row="1"
      android:layout_column="0"
      android:textSize="14dip" />
  <Button
      android:text="Cell 3"
      android:layout_row="1"
      android:layout_column="1"
      android:textSize="14dip" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)

问题是我的视图不能均匀地拉伸到每一行.这会在GridLayout的右侧产生大量额外空间.

我试过设置,layout_gravity="fill_horizontal"但只适用于行的最后一个视图.这意味着Cell 1一直延伸为Cell 0提供足够的空间.

关于如何解决这个问题的想法?

android android-layout android-gridview android-gridlayout

211
推荐指数
10
解决办法
30万
查看次数

Android应用中的GridView VS GridLayout

我必须使用网格在Android中实现Photo Browser,我想知道GridView和GridLayout之间区别.

我正在使用GridView动态显示图像.

grid android grid-layout android-gridview

203
推荐指数
1
解决办法
10万
查看次数

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

我正在尝试用两列制作gridview.我的意思是每排并排两张照片,就像这张照片一样.

在此输入图像描述

但是我的照片之间有空格,因为它的大小不一样.这是我得到的.

在此输入图像描述

如您所见,第一张图片隐藏了显示联系人姓名和电话号码的图例.而其他图片未正确拉伸.

这是我的GridView xml文件.如您所见,columnWidth设置为200dp.我希望它是自动的,所以图片会自动调整每个屏幕尺寸的大小.

<?xml version="1.0" encoding="utf-8"?>
<GridView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridViewContacts"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:numColumns="2"
    android:columnWidth="200dp"
    android:stretchMode="columnWidth"    
    android:gravity="center" />
Run Code Online (Sandbox Code Playgroud)

这是项目xml文件,它代表每个项目本身.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageViewContactIcon"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY" />

    <LinearLayout
        android:id="@+id/linearlayoutContactName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:background="#99000000"
        android:layout_alignBottom="@+id/imageViewContactIcon">

        <TextView
            android:id="@+id/textViewContactName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:textStyle="bold"
            android:textSize="15sp"
            android:text="Lorem Ipsum" />       

        <TextView
            android:id="@+id/textViewContactNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:layout_marginLeft="5dp"
            android:focusable="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:textSize="10sp"
            android:text="123456789" />

    </LinearLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

所以我想要的是每行显示两个图像,并且无论屏幕大小如何,图像都会自动调整大小.我在布局上做错了什么?

谢谢.

android android-layout android-gridview

175
推荐指数
2
解决办法
16万
查看次数

ListView的回收机制如何运作

所以我之前遇到过这个问题,我自然就在这里寻求帮助.Luksprog的答案很棒,因为我不知道ListView和GridView如何通过回收视图优化自身.因此,根据他的建议,我能够改变将Grid添加到GridView的方式.问题是现在我有一些没有意义的事情.这是getView我的BaseAdapter:


public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.day_view_item, parent, false);
        }
        Log.d("DayViewActivity", "Position is: "+position);
        ((TextView)convertView.findViewById(R.id.day_hour_side)).setText(array[position]);
        LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.day_event_layout);

        //layout.addView(new EventFrame(parent.getContext()));

        TextView create = new TextView(DayViewActivity.this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 62, getResources().getDisplayMetrics()), 1.0f);
        params.topMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
        params.bottomMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
        create.setLayoutParams(params);
        create.setBackgroundColor(Color.BLUE);
        create.setText("Test"); 
        //the following is my original LinearLayout.LayoutParams for correctly setting the TextView Height …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-gridview

142
推荐指数
2
解决办法
7万
查看次数

GridView行重叠:如何使行高适合最高的项目?

以前的人一样,我在GridView项目之间有不必要的重叠:

GridView项重叠

请注意除最右边的列之外的每个列中的文本.

我与前一个问题的不同之处在于我不想要一个恒定的行高.我希望行高可以变化以适应每行中最高的内容,以有效利用屏幕空间.

查看GridView源代码(不是权威副本,但kernel.org仍然是down),我们可以在fillDown()和makeRow()中看到最后一个View看到的是"引用视图":行的高度是从视图的高度,而不是最高的视图.这解释了为什么最右边的列没问题.不幸的是,GridView没有很好的设置让我通过继承来解决这个问题.所有相关领域和方法都是私人的.

所以,在我采取"克隆和拥有"这条破旧的臃肿路径之前,我在这里缺少一个技巧吗?我可以使用TableLayout,但这需要我自己实现numColumns="auto_fit"(因为我想在电话屏幕上只需要一个长列),它也不会是一个AdapterView,这应该是它应该是.

编辑:事实上,克隆和自己在这里不实用.GridView依赖于其父类和兄弟类的不可访问部分,并导致至少导入6000行代码(AbsListView,AdapterView等)

android android-layout android-gridview

43
推荐指数
1
解决办法
4万
查看次数

如何用RecyclerView完全替换listView/GridView?

我注意到新的RecyclerView类,虽然它使事情变得更清洁,但缺乏我熟悉的许多功能:

  1. 分隔符,但这可以通过查看这篇文章这篇文章来解决
  2. "footerDividersEnabled"
  3. "headerDividersEnabled"
  4. "listSelector",但也许我应该根据视图设置它?
  5. "fastScrollEnabled"
  6. "smoothScrollbar"
  7. "textFilterEnabled"
  8. 我还试图找出是否有一种新的方法来使用带有过滤的新类(通过实现Filterable与ListView一起使用).我不知道是否有这样的事情
  9. "tools:listitem",用于显示UI设计器上的项目.

这些是我使用的,但也许还有其他我错过了.

是否有任何教程或一些指导如何替换这些东西?

android android-listview android-gridview android-recyclerview

38
推荐指数
2
解决办法
1万
查看次数

gridView具有不同的单元格大小,pinterest风格

背景

GridView是一个扩展 AdapterView的类,这意味着它可以有效地显示网格样式的单元格,并在用户滚动时回收旧视图以显示为新视图.

问题

有时,您希望获得一个特殊的UI,它类似于Windows Phone Tiles UI,具有不同大小的单元格.

像这样的东西:

AABB
AACC
AADD
AADD
Run Code Online (Sandbox Code Playgroud)

每个字母代表其细胞的一部分,因此细胞A是2x4,细胞B和细胞C各占2x1,细胞D是2x2.

它可能甚至更多,其中单元格D比我所示的稍微高一点,并且在它下方有另一个单元格,因此D的末端和A的末尾不必对齐.

具有这种风格的应用程序的一个例子是pinterest.

GridView不允许这样的事情.

事实上,我尝试的每个解决方案都有问题.想问一下是否有其他替代品或更好的解决方案.

我发现了什么

有多种方法可以解决此问题:

  1. 作为扩展AdapterView 的类,GridView可以为每个项目设置一个类型(使用BaseAdapter),这将允许您设置如何布局单元格.

    但是,它仍会限制你,因为你会得到一排物品,一个在另一个之下.你必须让它们对齐.

  2. GridLayout是一个相对较新的布局,它非常灵活.谷歌为它发布了一个很好的兼容性库,支持API7及更高版本.

    但是,它不使用任何视图的回收,因此如果您希望显示大量项目,这是一个糟糕的选择.

    如果您有很多项目,则需要为它们创建所有视图.

  3. QuiltView库 - 从GridLayout扩展,所以基本上有类似的问题.

  4. StaggeredGridView - 看起来最有前途,但有很多错误,特别是在改变方向时.这样的错误包括空单元格,坏滚动和NPE(罕见但仍然发生).我也不确定它是否支持单独使用自定义单元而不是imageView.

  5. 其他解决方案,如此处所述.

这个问题

有谁知道这个问题的另一种替代方案?对于我展示的任何解决方案,可能有一些解决方法吗?


编辑:我认为关于StaggeredGridView,滚动和异常可以通过使用在getView中设置其大小的普通ImageView来解决.我认为它以一种奇怪的方式工作的原因是样本在从互联网加载后更新了imageview的大小.

但是,空单元格问题仍然存在于此库中.不仅如此,即使不改变方向,它们的尺寸也会发生很大变化.


编辑:目前,我认为最好的解决方案是使用 PinterestLikeAdapterView库.

它没有我能找到的任何问题.

但是,它不能使项目占用超过1个单元格宽度.尽管如此,这还是非常好的.

编辑:遗憾的是它与notifyDataSetChanged有问题.我在这里报道了这件事.

android cells android-gridview android-adapterview android-gridlayout

35
推荐指数
2
解决办法
2万
查看次数

GridView行外边距

我找不到向GridView行添加外边距的方法.我找到了在GridView行之间添加内部填充的setHorizontalSpacingsetVerticalSpacing属性,但它不适用于行的外边框.

我希望得到一个结果,因为它在Google Play商店中有特色:

在此输入图像描述

谢谢!

android android-gridview

30
推荐指数
1
解决办法
2万
查看次数

GridView可以像ListView一样有页脚和页眉吗?

一个简单的问题:

ListView我使用此代码:

list.addHeaderView(headerView);
Run Code Online (Sandbox Code Playgroud)

工作时如何处理gridview

谢谢.

android android-gridview

26
推荐指数
4
解决办法
3万
查看次数

Android - Gridview还是listview?

如何在我的应用程序中创建这种视图?(截图实际上是Android市场上可用的Android应用程序).

在此输入图像描述

我很困惑,因为我假设我们可以使用Gridview或使用ListView创建相同类型的布局.

问题:

  • 在Gridview中,我们可以在两行之间给出分隔符吗?我们可以给gridview中的每一行提供背景吗?
  • 在Listview中,我认为我们可以使用背景连续3本书自定义列表视图,我们也可以给出一个分隔符.

从您的专家方面,请建议我为Android应用程序设计和创建相同类型的布局的可能解决方案.

android android-listview android-gridview

23
推荐指数
1
解决办法
2万
查看次数