标签: android-gridview

强制gridview绘制所有图块

我有一个android gridview,我正在使用一些自定义滚动,让它在两个维度滚动 - 这意味着不会调用默认滚动.

我怀疑这可能是屏幕外的行不可见的原因.我知道他们在那里,他们影响布局和一切,但他们从来没有画画.

所以我的问题是 - 有没有办法强制gridview在加载时绘制所有的tile,而不仅仅是可见的?

谢谢.

编辑:澄清 - 在我的tileadapter中,我将子计数设置为225.在我的gridview中,对getChildCount()的调用返回165.

再次编辑:这只发生在gridview的高度大于屏幕的高度时 - y轴上屏幕外的子项只是从子计数中减去 - 将子项的大小设置为一个数字紧贴在屏幕上可以消除问题,但会破坏滚动的目的.

码!

XML活动布局:

  <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:theme="@style/Theme.Custom"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <TextView android:id="@+id/logmessage"
  android:theme="@style/Theme.Custom"
  android:layout_width="fill_parent"
  android:layout_height="25dip"
  android:text="LogMessage"/>

  <RelativeLayout android:id="@+id/boardwrap"
  android:layout_weight="1"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"
  android:gravity="center_vertical">
  <com.MyProject.GameGrid 
    android:id="@+id/board"
    android:theme="@style/Theme.Custom"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:numColumns="15"
    android:stretchMode="none"
    android:verticalSpacing="0dip"
    android:horizontalSpacing="0dip"
    android:padding="0dip"
    android:columnWidth="20dip"
    android:scrollbars="none"/>
</RelativeLayout>
<RelativeLayout 
    android:id="@+id/toolbar"
    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:background="#FFFFFFFF"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

活动:

public class GameBoardActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gameboard);

        GameGrid Board = (GameGrid)findViewById(R.id.board);
        Board.setAdapter(new TileAdapter(this));
    }
}
Run Code Online (Sandbox Code Playgroud)

GameGrid:

public …
Run Code Online (Sandbox Code Playgroud)

android android-gridview

5
推荐指数
2
解决办法
4514
查看次数

GridView或TableLayout?

http://img683.imageshack.us/img683/645/weatherscreenmockupoutl.png

我问自己什么是编码这种布局的最佳方法.基本上我只需要知道如何获得具有相等宽度的七列.

提前致谢!

android android-layout android-gridview android-tablelayout

5
推荐指数
1
解决办法
4413
查看次数

使用GridView与ImageViews和TextViews的问题

我正在尝试在每个单元格中使用带有ImageView和TextView的GridView.所以我创建了单元格布局,网格布局,imageAdapter和主要活动,当然,但我不断遇到以下问题:

当我在模拟器上尝试这个时,初始图像和标题会正确显示,但是一旦我向下滚动,一些项目开始变得混乱并且不断变化甚至重复一些时间.

我正在使用2个并行阵列(图像和标题).我尝试使用Log.v函数来查找调用getView时显示的索引和图像,但只能正确分配初始的(可以看到没有滚动).

我通过一遍又一遍地生成视图来解决问题,但这显然不是正确的方法.

这是我正在使用的文件:

网格单元格:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/GridItem"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:orientation="vertical"
   android:gravity="center_horizontal">

   <ImageView android:id="@+id/grid_item_image"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
   </ImageView>

   <TextView android:id="@+id/grid_item_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="TextView"
      android:gravity="center_horizontal"
      android:textColor="#FFFFFF">
   </TextView>

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

网格视图:

<?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" >

    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:gravity="center_vertical"
        android:text="@string/txtMenu"
        />
    <GridView
        android:id="@+id/grdMenu"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="50dp"
        android:gravity="center"
        android:padding="10dp"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:numColumns="3" >
    </GridView>

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

GridActivity :(唯一实现的方法)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.menu);

    GridView gridview = (GridView) findViewById(R.id.grdMenu);
    gridview.setAdapter(new ImageAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-gridview

5
推荐指数
1
解决办法
2831
查看次数

更改GridView的行为以使其水平滚动而不是垂直滚动

我想制作一个UI像a 的元素GridView,我希望它是完整的功能,但希望它可以水平滚动而不是垂直.

通过水平滚动我的意思是它应该以这种方式构建而不是放入HorizontalScrollView.

Custom GridView将会有固定数量的rows发言权4-5,而且columns应该extensible基于该项目的数量Adapter.您可以将其视为本机GridView所做的相反,但它应该保持功能.

我已经查看GridView了Google 如何实现的源代码,但是我能够理解得非常少,并且开始View从头开始并不是一个好主意,因为我担心我将无法按照谷歌的方式做事记忆优化.

我观察到GridView扩展AbsListView,所以我的问题是,它AbsListView是允许GridView垂直滚动并从适配器添加项目,还是GridView添加垂直滚动功能?我应该调整GridView还是AbsListView

知道是否已经做了我想做的事情会更好吗?

这已在Android Honeycomb 3.1及更高版本的原生图库和YouTube应用中实施.所以,如果有人有想法,请详细说明.

Honeycomb Gallery应用程序的快照:

在此输入图像描述

Honeycomb YouTube应用程序的快照:

在此输入图像描述

android android-custom-view android-listview android-gridview android-view

5
推荐指数
1
解决办法
5349
查看次数

On Click Of Tabs(Radio Button) My Memory Getting Double

My layout is very complex. I have to make full page scrollable so what i did is - i have a gridView adapter for my gridview items and one custom adapter which has four tabs and then i set my gridview in that custom adapter. Then this whole view is set on my main activity which has a listview so its now scrolling with full page but issue is with memory.

I have 4 tab click events on custom adapter …

android memory-leaks lazy-loading android-gridview

5
推荐指数
1
解决办法
397
查看次数

在GridView或ListView的底部添加额外的空间

是否可以在GridView的底部添加额外的空间(有点像空行)?

我想这样,当你向下滚动到GridView的底部时,会有额外的50dp的空白空间.我尝试设置paddingBottom为50dp,但它似乎没有改变任何东西.

android android-gridview

5
推荐指数
2
解决办法
4042
查看次数

Android - 使用ColorFIlter从ColorView获取颜色应用于Drawable

我试图在GridView中获得ImageView的颜色,我之前已经应用了颜色过滤器.我正在运行带有4.2.2的Nexus 4

我正在改变像这样的ImageView的颜色.在应用滤镜之前,图像的实际颜色是白色.

Drawable myIcon = getResources().getDrawable(R.drawable.bufferbuildercolor3);                       
myIcon.setColorFilter(new PorterDuffColorFilter(Color.rgb(Color.red(color),Color.green(color), Color.blue(color)),PorterDuff.Mode.MULTIPLY));
Run Code Online (Sandbox Code Playgroud)

现在这实际上并没有改变我想要的源图像颜色.这始终是白色的.

我的问题是,在我丢失了用于设置它的数据后,我正在尝试很好地引用颜色.我想长按ImageView并获得它的颜色.

我在下面的问题中找到了一些代码,但它似乎不起作用,因为它总是返回白色(255,255,255),这是原始图像的颜色,但不是过滤器.如何在Android中获得像素颜色?

ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
int pixel = bitmap.getPixel(x,y);

int redValue = Color.red(pixel);
int blueValue = Color.blue(pixel);
int greenValue = Color.green(pixel);
Run Code Online (Sandbox Code Playgroud)

我尝试过类似下面的东西,但是当我调用getColorFilter时它就崩溃了.

ImageView image = (ImageView)findViewById(R.drawable.bufferbuildercolor3);
ColorFilter test = image.getColorFilter();
Run Code Online (Sandbox Code Playgroud)

我不知道还能做什么,除了找到实际网格位置的X/Y,然后在那个点获得屏幕背景颜色而不是图像.似乎应该有一个更简单的方法来做到这一点?

android android-imageview android-gridview android-drawable

5
推荐指数
1
解决办法
7771
查看次数

从GridView中删除项目

我对Android开发很新,我觉得这很简单,但是,我没有设法在谷歌上发现同样问题的任何人.我有一个Gridview,其中填充了TextView(顶部有一个图像)和一个ImageButton(删除当前项目).我想要做的是删除我单击ImageButton的项目.

这是我的主要:

public class ActivityMain extends Activity
{
GridView gridview;
public GridAdapter mainActivityAdapter;
public ArrayList<String> listService = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listService.add("Market");
    listService.add("Recherche");
    listService.add("Quiz");

    gridview = (GridView) findViewById(R.id.mainActivity_grid);
    mainActivityAdapter = new GridAdapter(this.getApplicationContext(), listService);

    gridview.setAdapter(mainActivityAdapter);

}
Run Code Online (Sandbox Code Playgroud)

}

这是我的适配器:

    public class GridAdapter extends BaseAdapter
    {
    Context context;
    ArrayList<String> list = new ArrayList<String>();
    GridAdapter adapter = this;

    public GridAdapter(Context context, ArrayList<String> list)
    {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount()
    {
        return list.size(); …
Run Code Online (Sandbox Code Playgroud)

android gridview adapter android-gridview

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

GridView使用Custom ArrayAdapter

也许我只是因为好奇而问错了问题.我通过扩展数组适配器来创建自定义适配器.现在我想在GridView中显示它.我已经阅读了很多文章,我发现它们只使用基本适配器来显示GridView.请大家告诉我这背后的逻辑是什么?我们可以使用Array适配器代替Base Adapter吗?

android android-arrayadapter android-gridview baseadapter

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

Gridview未正确显示为Listview的标题

我想要实现Fig-1,但我被图2困,并且无法将完整的gridview视为Listview的标题.

在此输入图像描述

正如您所看到的,gridview未完全显示并隐藏在图2中的Listview后面

Gridview xml:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<GridView
    android:id="@+id/gridview"
    android:numColumns="2"
    android:stretchMode="columnWidth"
    android:cacheColorHint="#ffffffff"
    android:gravity="center"
    android:verticalSpacing="5dp"
    android:horizontalSpacing="5dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

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

Listview xml:

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

<ListView
    android:id="@+id/listview"
    android:scrollbars="vertical"
    android:background="#fff"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</ListView>

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

片段代码:

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


    view=inflater.inflate(R.layout.fragmentpage_layout, null);

    listView=(ListView)view.findViewById(R.id.listview);

    header=inflater.inflate(R.layout.gridview_layout,null);

    gridView=(GridView)header.findViewById(R.id.gridview);
    listView.addHeaderView(header);
    gridViewAdapter=new CustomGridViewAdapter(getActivity(),images,toptexts, bottomtexts);
    listViewAdapter=new CustomListViewAdapter(getActivity(),images,toptexts,bottomtexts);

    gridView.setAdapter(gridViewAdapter);

    listView.setAdapter(listViewAdapter);


   return view;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

android listview android-gridview

5
推荐指数
1
解决办法
658
查看次数