gpt4 book ai didi

java - 以编程方式设置 GridView 和 ImageView 的宽度和高度

转载 作者:太空狗 更新时间:2023-10-29 16:37:23 25 4
gpt4 key购买 nike

我已经看到关于如何分别设置 ImageView 和 GridView 的高度和宽度的问题。 Here , herehere对于初学者

但是,我想知道如何设置两者。

这是我的设置。在我的 GridView 中,我有一个 ImageView 和一个 TextView。我有一些不同宽度和大小的图像,我想将其调整为始终为屏幕正方形大小的 1/3。在下面,我有一段文字描述。

这是我目前所拥有的代码...

gallerygridview.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/bg_light_blue"
android:orientation="vertical" >

<GridView
android:id="@+id/gridGallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:numColumns="3"
android:padding="0dp"
android:verticalSpacing="4dp" >
</GridView>

<ImageView
android:id="@+id/imgNoMedia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/app_name"
/>

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textStyle="bold"
android:typeface="sans"
android:layout_below="@+id/imageView1"
android:layout_marginTop="2dp"
android:layout_centerHorizontal="true"
android:textColorHighlight="#000000"
android:gravity="center"
/>
</LinearLayout>

在我的 Activity 中...

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallerygridview);

GridView gridView = (GridView) findViewById(R.id.gridGallery);

m_adapter = new PhotoImageAdapter(getBaseContext(),m_images);
gridView.setAdapter(m_adapter); // uses the view to get the context instead of getActivity().
registerForContextMenu(gridView);


}

在我的 Adapter 类中......

public View getView(int position, View convertView, ViewGroup parent) {

View view = convertView;
Holder holder=new Holder();

if (view == null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
view = inflater.inflate(R.layout.gallerygridview, parent, false);


holder.img = new ImageView(mContext);
holder.img = (ImageView) view.findViewById(R.id.imgNoMedia);
holder.tv = (TextView) view.findViewById(R.id.textView1);


int iDisplayWidth = mContext.getResources().getDisplayMetrics().widthPixels ;
int iImageWidth = (iDisplayWidth / 3)-15 ;
GridView.LayoutParams glp = (GridView.LayoutParams) view.getLayoutParams();
glp.width = iImageWidth;
glp.height = iImageWidth ;
view.setLayoutParams(glp);

view.setTag(holder);

} else {
holder = (Holder) view.getTag();
}

holder.tv.setText(m_images.get(position).key);
holder.img.setImageURI(Uri.parse(m_images.get(position).value));

return view;
}

目前,GridView 刚好是屏幕大小的 1/3。并且图像和文字都显示出来。但我希望 ImageView 填充 GridView 单元格内的剩余空间。

这是我想要的...

enter image description here

但这就是它的样子......

enter image description here

我做错了什么?而且,我如何以编程方式设置 GridView 的高度和其中的 ImageView?

提前致谢。

最佳答案

这里有一个相对简单的方法来做到这一点。将 GridView 放入您的布局中,设置拉伸(stretch)模式以拉伸(stretch)列宽,将间距设置为 0(或任何您想要的),并将列数设置为 2:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
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:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:numColumns="2"
/>
</FrameLayout>

引用this进一步了解 GridView 和 ImageView

关于java - 以编程方式设置 GridView 和 ImageView 的宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com