如何在我的应用程序中创建这种视图?(截图实际上是Android市场上可用的Android应用程序).
我很困惑,因为我假设我们可以使用Gridview或使用ListView创建相同类型的布局.
从您的专家方面,请建议我为Android应用程序设计和创建相同类型的布局的可能解决方案.
现在填充我的GridViews我在每个Android活动(大多数是其中)上使用扩展的BaseAdapter类.
为了便于阅读和维护,我试图将所有BaseAdapter代码放在一个单独的类文件中.
要填充GridView,我正在使用LayoutInflater,这里的东西变得棘手......
由于getLayoutInflater()来自android.Activity
,它只是不会做的伎俩.我尝试将我的Adapter.java(填充GridViews的类)扩展为Activity类,然后在内部创建BaseAdapter类(我现在这样做的方式),但我无法使其正常工作.
以下是Adapter.java的外观:
//Adapter.java
package com.cimp.matitec;
import greendroid.app.GDActivity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class Adapter extends GDActivity{
public class ImageAdapter extends BaseAdapter
{
Context MyContext;
int count;
String[] nombre;
public ImageAdapter(Context _MyContext, int n, String[] nombre)
{
MyContext = _MyContext;
count = n;
this.nombre = nombre;
}
public int getCount()
{
/* Set the number of element we want on the grid */
return count;
} …
Run Code Online (Sandbox Code Playgroud) 我在创建基于GridView的日历时遇到问题.这是网格:
这应该是一个填充了事件的日历,所以我有我的适配器实现OnClickListener,我为日历中的每个按钮设置了该监听器.它适用于每个按钮,除了第一个按钮(在本例中为30).当我单击它时不起作用,但是当我尝试单击第一个按钮后单击另一个按钮时,它会在执行另一个按钮的单击之前执行第一个按钮.
我已经扫描了大约10页的相关问题,但没有发现有人遇到这个问题.请帮忙!
如上所述,这是我的代码的getView函数:
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder;
if (row == null)
{
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.calendar_day_gridcell, parent, false);
holder.gridCell = (Button) row.findViewById(R.id.calendar_day_gridcell);
holder.multiDayEvent = (EventLengthView)row.findViewById(R.id.eventLengthView);
}
else{
holder = (ViewHolder)row.getTag();
}
int calendarGridHeight = (calendarView.getHeight()-5)/(getCount()/7);
AbsListView.LayoutParams params = new AbsListView.LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
calendarGridHeight);
row.setLayoutParams(params);
//Change the background drawable depending on the position in the calendar
if ((position+1) % 7 …
Run Code Online (Sandbox Code Playgroud) 我正在开发一款小型Android应用.我需要这个Android应用程序的一部分是有一个水平和垂直滚动的网格.但是,最左边的列需要冻结(始终在屏幕上,而不是水平滚动的一部分).同样,顶部标题行需要冻结(不是垂直滚动的一部分)
如果以上内容没有太大意义,这张图片将有希望清楚地描述:
关键:
要做到这些尺寸中的一个很容易,我已经这样做了.但是,我无法让这两个维度发挥作用.(也就是说,我可以将底部部分全部变为蓝色,或者我可以将正确的部分全部变为红色,但不完全如上所述)我的代码如下所示,基本上会产生以下内容:
result_grid.xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/lightGrey">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@id/summaryTableLayout"
android:layout_weight="0.1"
android:layout_marginBottom="50dip"
android:minHeight="100dip">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TableLayout
android:id="@+id/frozenTable"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="2dip"
android:layout_marginLeft="1dip"
android:stretchColumns="1"
/>
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/frozenTable"
android:layout_marginTop="2dip"
android:layout_marginLeft="4dip"
android:layout_marginRight="1dip">
<TableLayout
android:id="@+id/contentTable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"/>
</HorizontalScrollView>
</LinearLayout>
</ScrollView>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_weight="0.1"
android:layout_alignParentBottom="true">
<Button
android:id="@+id/backButton"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="Return"/>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
Java代码:
private boolean showSummaries;
private TableLayout summaryTable;
private TableLayout frozenTable;
private …
Run Code Online (Sandbox Code Playgroud) 在android网格视图中,网格视图的行之间有额外的空间.我没有在gridview中添加任何空间.
这是我的xml文件
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:horizontalSpacing="5px"
android:numColumns="3"
android:columnWidth="50dip"
android:verticalSpacing="0dip"
android:gravity="center"
/>
Run Code Online (Sandbox Code Playgroud)
以及为gridview添加视图的imageview的另一个xml是
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/singlePhoto"
android:layout_gravity="top"
android:layout_width="145dip"
android:layout_height="145dip"
android:layout_marginTop="0dip"
android:layout_marginBottom="0dip"
>
</ImageView>
Run Code Online (Sandbox Code Playgroud)
在Adapter类中,代码是
if(mView == null){
mView = mLayoutInflater.inflate(R.layout.newsgridthumbpic, null);
}
ImageView mImage = (ImageView)mView.findViewById(R.id.singlePhoto);
PhotoGridInfoSet mInfo = (PhotoGridInfoSet)details.get(position);
if(mImage != null){
mImage.setTag(mInfo.getPhotoThumbNailString());
mImage.setVerticalScrollBarEnabled(true);
mImage.setVerticalFadingEdgeEnabled(true);
}
}!
Run Code Online (Sandbox Code Playgroud)
空间位于gridview行之间.我没有在代码中的任何地方添加任何空格仍然有垂直间距.我不能理解为什么gridview行之间有空间.此空间未出现在hdpi设备/模拟器中.此问题出在mdpi和ldpi设备/模拟器中.
在我的程序中,我正在使用带有一些图像的gridview,我想在用户点击gridview中的图像时显示一个菜单,然后从显示的菜单中选择要执行的操作.
这是我的代码:
package Kazemi.Alireza.scada;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.app.FragmentManager;
import android.content.Context;
import android.graphics.Typeface;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
@SuppressLint("NewApi")
public class CitiesTab extends Fragment {
AnimationDrawable[] frameAnimation;
ImageAdapter ia;
GridView gridView;
int in;
public View onCreateView(LayoutInflater …
Run Code Online (Sandbox Code Playgroud) 我正在使用阿拉伯语版本的Android应用程序.
在其中一个接口中,我有gridView.因此,要以正确的顺序显示项目,我必须从右到左显示GridView中的项目(以及从顶部到底部的corse).为此,我尝试在GridView中添加这些属性:
android:gravity="right"
android:layout_gravity="right"
Run Code Online (Sandbox Code Playgroud)
不幸的是,项目仍然从左到右显示.
有什么想法以正确的方式做到这一点?
我有一个应用程序,将有5-15个按钮,具体取决于后端可用的内容.如何定义正确的GridView布局文件以包含一组按钮,每个按钮都有不同的文本和其他属性?每个按钮实际上都会将一个项目添加到购物车,因此onClick代码将是相同的,除了它添加到购物车的项目.
如何定义一个数组,以便我可以添加可变数量的按钮,但仍然用唯一的ID引用它们?我已经看过arrays.xml的例子,但是他们已经创建了一个预先设置的字符串数组.我需要一种方法来创建一个对象,而不是在布局或数组xml文件中定义文本.
更新 - 添加有关添加到GridView的信息
我想将它添加到GridView中,因此调用[addView方法](http://developer.android.com/reference/android/widget/AdapterView.html#addView (android.view.View,%20int )会导致an UnsupportedOperationException.我可以执行以下操作:
ImageButton b2 = new ImageButton(getApplicationContext());
b2.setBackgroundResource(R.drawable.img_3);
android.widget.LinearLayout container = (android.widget.LinearLayout) findViewById(R.id.lay);
container.addView(b2);
Run Code Online (Sandbox Code Playgroud)
但这并没有像我想的那样在网格中布局按钮.这可以在GridView中完成吗?
我有一个GridView
5x50内的物品.
我需要向所有方向滚动它们,而不是在到达终点时停止,只是从顶部/左侧开始.
例如从左到右滚动
在滚动之前
1 2 3 4 5
6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
滚动到右边后
5 1 2 3 4
10 6 7 8 9
Run Code Online (Sandbox Code Playgroud)
从上到下(或从下到上)
在滚动到底部之前
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)
滚动后
6 7 8 9 10
11 12 13 14 15
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我试着让它像GridView
原生卷轴一样平滑滚动.
android android-layout android-gridview android-canvas android-view
我想在捕获图像时运行媒体扫描仪.捕获后,图像在网格视图中更新.为此,我需要运行媒体扫描仪.我找到了两个运行媒体扫描程序的解决方案,一个是广播 事件,另一个是运行媒体扫描程序类.我认为在Ice Cream Sandwich(4.0)中引入了媒体扫描程序类.在版本之前需要设置广播事件来运行媒体扫描程序.
任何人都可以指导我如何以正确的方式运行媒体扫描仪.
android android-camera android-gridview android-mediascanner
android ×10
android-gridview ×10
android-view ×1
arabic ×1
arrays ×1
baseadapter ×1
button ×1
dynamic ×1
gridview ×1