我有一个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) http://img683.imageshack.us/img683/645/weatherscreenmockupoutl.png
我问自己什么是编码这种布局的最佳方法.基本上我只需要知道如何获得具有相等宽度的七列.
提前致谢!
我正在尝试在每个单元格中使用带有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) 我想制作一个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
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 …
是否可以在GridView的底部添加额外的空间(有点像空行)?
我想这样,当你向下滚动到GridView的底部时,会有额外的50dp的空白空间.我尝试设置paddingBottom为50dp,但它似乎没有改变任何东西.
我试图在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开发很新,我觉得这很简单,但是,我没有设法在谷歌上发现同样问题的任何人.我有一个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) 也许我只是因为好奇而问错了问题.我通过扩展数组适配器来创建自定义适配器.现在我想在GridView中显示它.我已经阅读了很多文章,我发现它们只使用基本适配器来显示GridView.请大家告诉我这背后的逻辑是什么?我们可以使用Array适配器代替Base Adapter吗?
我想要实现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 ×10
android-gridview ×10
adapter ×1
android-view ×1
baseadapter ×1
gridview ×1
lazy-loading ×1
listview ×1
memory-leaks ×1