我必须设计布局,使整个布局应该滚动和内部布局我必须在Grid表单中显示相关内容所以我决定使用GridView.但问题是我无法在GridView里面使用ScrollView我已阅读文档(文档也说我们应该也不要GridView在里面使用ScrollView)但是我必须这样做,所以请任何关于此的请给我一些想法.谢谢
我正在尝试创建一个包含文本和图像的屏幕.我希望图像像网格一样布局,如下所示,但我希望它们没有周围ScrollView提供的滚动功能.
图像最能说明我的问题:

<ScrollView>
<LinearLayout>
<ImageView />
<TextView />
<GridView />
<TextView />
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
什么是显示不同数量图像的网格的最佳方法,其中网格没有滚动功能?
请注意,禁用GridView的滚动功能不起作用,因为这只会禁用滚动条但不显示所有项目.
更新:下图显示了在GridView中禁用滚动条的情况.

我有一个ScrollView的问题,里面有个性化的GridView和其他视图.第一次启动Activity时,ScrollView从顶部开始,但是如果我访问Activity其他时候ScrollView从头开始GridView.I使用了此链接中为我的GridView 找到的类ExpandableHeightGridView .Activity布局的xml代码是这样的:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollViewLuogo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff" >
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="150dp"
android:layout_height="100dp"
android:layout_marginLeft="14dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:adjustViewBounds="true"
android:maxHeight="200dp"
android:maxWidth="200dp"
android:scaleType="fitXY"
android:src="@android:drawable/ic_menu_gallery" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
<TextView
android:id="@+id/nomeTVActivityLuogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="17sp"
android:textColor="#005788" />
<TextView
android:id="@+id/indirizzoTVActivityLuogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout2"
android:layout_marginTop="10dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageViewMappaLuogo"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="14dp"
android:layout_marginRight="14dp"
android:layout_marginTop="5dp"
android:scaleType="fitXY"
android:src="@drawable/sfondo_mappa" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp" …Run Code Online (Sandbox Code Playgroud) 我试图在GridView中显示一个动态增长的字符串列表,其中包含一个复选框,GridView本身位于TableLayout中.
我可以连续显示这些"已复选"的字符串.当我让用户在GridView中动态添加新字符串时,我的问题出现了.
我创建了一个接收字符串列表的自定义适配器.假设我们有n个字符串.适配器为项目计数返回'n + 1'; 在getView中,它返回:
到现在为止还挺好.单击"+"按钮时,我将一个空字符串添加到字符串列表中,并在适配器中调用notifyDataSetChanged.
GridView重新绘制了一个项目.但它保持原始高度并创建一个垂直滚动条.我希望GridView扩展它的高度(即在屏幕上占用更多空间并显示所有项目).
我试图将屏幕更改为垂直LinearLayout而不是TableLayout,但结果是相同的.
这是我的屏幕布局:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<!-- other lines omitted -->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/wine_rack_explanation"
android:layout_gravity="center_vertical" />
<GridView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/gvRack"
android:columnWidth="90dp"
android:numColumns="auto_fit" />
</LinearLayout>
<!-- other lines omitted -->
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
适配器中的复选框+字符串项定义如下:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CheckBox android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cbCoordinate"
android:checked="true"
/>
<EditText android:id="@+id/txtCoordinate"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
"+"按钮项定义如下:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:id="@+id/btnAddBottle" …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中以编程方式设置Gridview的高度.
有没有办法实现呢?
我只想从代码中更改两个特定情况下的gridview高度.
编辑:
<fragment
android:id="@+id/mygridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dip"
class="com.myapp.android.MyGridViewClass" />
Run Code Online (Sandbox Code Playgroud)
MyGridViewClass扩展了Fragment,其中填充了Gridview.
<GridView
android:id="@+id/mygridview_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:columnWidth="90dp"
android:gravity="center_vertical|center_horizontal"
android:horizontalSpacing="1dp"
android:numColumns="3"
android:scrollbars="vertical"
android:stretchMode="spacingWidthUniform"
android:verticalSpacing="5dp" />
Run Code Online (Sandbox Code Playgroud)
在myGridViewClass中onViewCreated,我使用代码对gridview进行了膨胀,
gridView = (GridView)getView().findViewById( R.id.mygridview_container);
gridAdapter = new MyCustomAdapter(context, list);
gridView.setAdapter(gridAdapter);
Run Code Online (Sandbox Code Playgroud)
每当创建视图时,我都必须检查gridview中的项目数并相应地设置高度.
当我尝试为gridview设置layoutParams()时,我遇到了这个异常.
android.view.InflateException: Binary XML file line #89: Error inflating class fragment
Run Code Online (Sandbox Code Playgroud)
其中第89行对应于片段class ="com.myapp.android.MyGridViewClass"中的这一行
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/titleBarBG"
android:layout_alignParentLeft="true" >
<RelativeLayout
android:id="@+id/scrollContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<GridView
android:id="@+id/issueList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/archiveTitle"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/customshape"
android:numColumns="3"
android:overScrollMode="never"
android:scrollbars="none" >
</GridView>
</RelativeLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我想创建一个像桌子一样的网格视图.例如,网格的大小将增加,这将使gridview更高.我希望网格视图显示所有内容,并在有其他内容时扩展高度,而不是隐藏额外的内容
怎么实现这个?谢谢
在这里,我使用视图和代码,如下所示.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TableRow
android:id="@+id/tab_stone_info"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="1dp"
android:background="@color/styleBreakTabColor"
android:weightSum="9">
<TextView
android:id="@+id/stone_Type"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:gravity="center"
android:text="@string/Type"
android:textColor="@color/txtStyleBreakup"
android:textSize="12sp" />
<TextView
android:id="@+id/stone_Shape"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:gravity="center"
android:text="@string/Shape"
android:textColor="@color/txtStyleBreakup"
android:textSize="12sp" />
<TextView
android:id="@+id/stone_Qlty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:gravity="center"
android:text="@string/Quality"
android:textColor="@color/txtStyleBreakup"
android:textSize="12sp" />
<TextView
android:id="@+id/stone_Grade"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:gravity="center"
android:text="@string/Grade"
android:textColor="@color/txtStyleBreakup"
android:textSize="12sp" />
<TextView
android:id="@+id/stone_Qty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:gravity="center"
android:text="@string/Qty"
android:textColor="@color/txtStyleBreakup"
android:textSize="12sp" />
<TextView
android:id="@+id/stone_Wt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cell_shape"
android:gravity="center"
android:text="@string/Wt"
android:textColor="@color/txtStyleBreakup"
android:textSize="12sp" />
<TextView
android:id="@+id/stone_MMSize" …Run Code Online (Sandbox Code Playgroud) 我在RelativeLayout中有一个GridView的问题,它在ScrollView中也是如此.问题是RelativeLayout的高度不遵循GridView内容的高度.当有多行时,GridView会被剪裁并出现滚动条,这是不可取的.我试图使用Android层次结构查看器中的屏幕截图来说明我的问题.您可以看到红色RelativeLayout框如何剪切GridView的第二行.我粘贴页面的XML布局(page.xml)和单个网格项(griditem.xml).我使用以下代码来扩展gridAdapter代码中的网格项:
/***********gridAdapter片段的开始**********************/
public View getView(int position, View convertView, ViewGroup parent)
{
View v;
if(convertView==null){
li = LayoutInflater.from(mContext);
v = li.inflate(R.layout.griditem, null);
//code for fetching textView and imageUrl content
TextView tv = (TextView)v.findViewById(R.id.icon_text);
tv.setText(textContent);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
//code for fetching and attaching image to imageView
}
else
{
v = convertView;
}
return v;
}
Run Code Online (Sandbox Code Playgroud)
/***********gridAdapter片段结尾**********************/
/***********启动page.xml**********************/
<TextView android:id="@+id/title" android:layout_weight="1"
android:layout_width="320dip"
android:layout_height="wrap_content"
android:singleLine="false"
android:textStyle="bold"
android:textSize="14dip"
/>
<ImageView android:id="@+id/image"
android:layout_below="@+id/title"
android:adjustViewBounds="true"
android:layout_width="128dip"
android:layout_height="96dip"
android:layout_marginRight="4dip"
/>
<TextView android:id="@+id/name"
android:layout_weight="1"
android:layout_below="@+id/title"
android:layout_toRightOf="@+id/image"
android:layout_width="192dip" …Run Code Online (Sandbox Code Playgroud) 当我在ListView项目中放置StaggeredGridView时,它的高度变为零.我尝试在这个答案中修改onMeasure ,但它没有效果.
修改过的StaggeredGridView:
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
Run Code Online (Sandbox Code Playgroud)
列表项布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.playday.app.views.InfiniteGridView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/pics"
android:layout_marginTop="@dimen/small"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:item_margin="2dp"
app:column_count="4" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
我正在使用gridview来显示一些图像.我做了代码,但我仍然没有得到任何图像
定制适配器
public class CustomAdapter extends BaseAdapter {
private Context context;
private int[] images;
public CustomAdapter(Context context, int[] images) {
this.context = context;
this.images = images;
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return images[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.custom_trips_frag_row, parent, false);
// …Run Code Online (Sandbox Code Playgroud)