如何在android studio中垂直和水平填充图像数组

艾曼·沙拉夫

目标:使图像垂直和水平显示阵列

任务是让它无限地向右和向左移动,它已经可以上下工作,但是当我想向右走时却没有。无论图像的大小如何,无论图像的数量和列数如何,它都需要。

我尝试过这些方法,但没有一个给我想要的结果:

https://stackoverflow.com/a/6716638/8889248

如何使网格视图在android中水平而不是垂直滚动?

活动_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity">


         <GridView
            android:id="@+id/gv"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:horizontalSpacing="20dp"
            android:columnWidth="200dp"
            android:numColumns="4"
            android:verticalSpacing="20dp"
            android:stretchMode="columnWidth"
             android:scrollbarAlwaysDrawHorizontalTrack="true"
             android:scrollbarAlwaysDrawVerticalTrack="true"
             android:scrollbars="horizontal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            >

         </GridView>




</LinearLayout>

grid_single.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="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:orientation="vertical">
    
    
    
                <ImageView
                    android:id="@+id/grid_image"
                    android:layout_width="70dp"
                    android:layout_height="70dp" ></ImageView>


</LinearLayout>

主活动.java

    package com.example.gridview;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    GridView grid;

    int[] imageId = {
            R.drawable.dog,
            R.drawable.elephant,
            R.drawable.tiger,
            R.drawable.fish,
            R.drawable.wolf,
            R.drawable.lion,
            R.drawable.horse,
            R.drawable.house,
            R.drawable.monkey,
            R.drawable.restaurant,
            R.drawable.fox,
            R.drawable.shark,
            R.drawable.nerd,
            R.drawable.confused,
            R.drawable.laughing
    };

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

        CustomGrid adapter = new CustomGrid(MainActivity.this,  imageId);
        grid=(GridView)findViewById(R.id.gv);
        grid.setAdapter(adapter);
        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                Toast.makeText(MainActivity.this, "You Clicked at " , Toast.LENGTH_SHORT).show();

            }
        });

    }

}

自定义网格.java

 package com.example.gridview;

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 CustomGrid extends BaseAdapter{
    private Context mContext;

    private final int[] Imageid;

    public CustomGrid(Context c, int[] Imageid ) {
        mContext = c;
        this.Imageid = Imageid;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return Imageid.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View grid;
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null) {

            grid = new View(mContext);
            grid = inflater.inflate(R.layout.grid_single, null);
            ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image);
            imageView.setImageResource(Imageid[position]);


        } else {
            grid = (View) convertView;
        }

        return grid;
    }
}

宽度:200dp,高度:200dp

宽度:70dp,高度:70dp

优素福·沙拉夫

我想我已经弄清楚你到底想做什么了。

我研究并找到了如何使用此链接进行操作:https : //stackoverflow.com/a/36128774/15392527

将您的 activity_main.xml 更改为:

活动_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity">

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="900dp"
                android:layout_height="match_parent"
                android:orientation="horizontal">

                <GridView
                    android:id="@+id/gv"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:columnWidth="200dp"
                    android:gravity="center"
                    android:horizontalSpacing="20dp"
                    android:numColumns="4"
                    android:scrollbarAlwaysDrawHorizontalTrack="true"
                    android:scrollbarAlwaysDrawVerticalTrack="true"
                    android:scrollbars="horizontal"
                    android:stretchMode="columnWidth"
                    android:verticalSpacing="20dp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent">

                </GridView>
            </LinearLayout>
        </FrameLayout>
    </HorizontalScrollView>


</androidx.constraintlayout.widget.ConstraintLayout>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python如何使用带有OpenCV的HoughLines检测图像中的垂直和水平线?

如何在Android Studio中从SQLite检索图像

如何在更大的div内使图像中心(垂直和水平)居中

如何在Android Studio中垂直对齐不同的元素?

如何在Android Studio中添加图标图像按钮

如何在CSS中垂直和水平对齐?

如何从图像中删除水平和垂直线

如何在Android Studio中垂直居中ConstraintLayout内容?

如何在div(垂直和水平)内将图像居中并切除多余的图像?

如何垂直和水平对齐图像的中心?

如何在不使用CSS拉伸图像的情况下使垂直和水平居中?

如何在CSS中垂直和水平居中放置方形SVG,从而无论尺寸如何,只有图像在视口中可见

如何垂直和水平放置SVG图像中心?

如何在Android Studio中打印ImageView中显示的图像

如何在Android中从SQLite填充ListView?

如何在DIV中垂直和水平对齐SPAN

如何在放置在绝对位置的响应图像上垂直和水平居中放置文本?

如何延迟垂直和水平加载图像?

如何在中继器控件中垂直而不是水平地显示图像行

如何在响应页面上的div中垂直和水平居中放置两个图像

如何在数组android studio中编码多个图像

如何在 Android Studio 中锐化图像/位图

CSS:如何在 div 中垂直和水平居中图像

如何在引导程序中制作垂直和水平对齐的响应式图像

如何使用填充垂直/水平居中 CSS 背景图像

如何在android studio中调整圆圈内的图像大小?

如何在android studio中的imageview中交换图像?

如何在android形状中绘制水平线和垂直线

如何在 SkyFloatingLabelTextField 中垂直和水平对齐文本?