跨越两列gridview三列

 昙檀禅潺_162 发布于 2023-02-09 14:58

我希望有人可以帮助我,我有一个网格布局,由8个项目的适配器填充.网格中有三列,这留下了两行,其中三列为完整列,另一行为两列,末尾为空白.我附上图片来详细说明我想要实现的目标.我希望能够拉伸最后一行行列以填充gridview的宽度.这是由适配器填充.

下面是应用程序的现状,我有8个单元格的内容,没有第九个单元格,以防与我的图像混淆. 该应用程序现在如何

这是我希望它的样子. 在此输入图像描述 所以我想将两个单元拉伸到三列.

以下是我到目前为止实施的代码

public class channels_fragment extends Fragment {

    private View view;
    private GridView channelsGridView;
    protected Handler handler;
    //protected GridAdapter gridAdapter;
    private Main_Activity main;
    private final ChannelsModel model = new ChannelsModel();

    static final String[] channelTitles = new String[]{"test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8"};


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        main = (Main_Activity) this.getActivity();
        view = inflater.inflate(R.layout.channels_fragment_layout, null);

        channelsGridView = (GridView)view.findViewById(R.id.channelsGrid);

        channelsGridView.setAdapter(new ImageAdapter(this.getActivity(), channelTitles));
        channelsGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {

            }
        });


        return view;
    }


    public static int convertDpToPixels(float dp, Context context){
        Resources resources = context.getResources();
        return (int) TypedValue.applyDimension(
                TypedValue.COMPLEX_UNIT_DIP,
                dp,
                resources.getDisplayMetrics()
        );
    }

class ImageAdapter extends BaseAdapter{

    private Context context;
    private final String[] channelTitles;

    public ImageAdapter(Context context, String[] channelTitles){
        this.context = context;
        this.channelTitles = channelTitles;
    }

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

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;

        if (convertView == null) {

            gridView = new View(context);

            // get layout from mobile.xml
            gridView = inflater.inflate(R.layout.grid_item_layout, null);

            // set value into textview
            TextView textView = (TextView) gridView
                    .findViewById(R.id.grid_item_text);
            textView.setText(channelTitles[position]);

            // set image based on selected text
            ImageView imageView = (ImageView) gridView
                    .findViewById(R.id.grid_item_image);

            ImageView iv = (ImageView) gridView.findViewById(R.id.ver_border_dark);

            String channelTitle = channelTitles[position];

            if (position == 6 ){

                gridView.setBackgroundResource(R.drawable.background_bottom_dark);
                textView.setTextColor(Color.WHITE);

            }
            if (position ==7)

            {
                gridView.setBackgroundResource(R.drawable.background_bottom_dark);
                textView.setTextColor(Color.WHITE);
                iv.setVisibility(View.VISIBLE);
                iv.setImageResource(R.drawable.grid_line_ondark_vert);
            }

            if (channelTitle.equals("test1")) {
                imageView.setImageResource(R.drawable.icon_events);
            } else if (channelTitle.equals("test2?")) {
                imageView.setImageResource(R.drawable.icon_whats_nearby);
            } else if (channelTitle.equals("test3")) {
                imageView.setImageResource(R.drawable.icon_top_tips);
            } else if (channelTitle.equals("test4")) {
            imageView.setImageResource(R.drawable.icon_plan_my_trip);
            } else if (channelTitle.equals("test5")) {
                imageView.setImageResource(R.drawable.icon_special_offers);
            } else if (channelTitle.equals("test6")) {
                imageView.setImageResource(R.drawable.icon_explore_more);
            } else if (channelTitle.equals("test7")) {
                imageView.setImageResource(R.drawable.icon_city_plus);
            } else if (channelTitle.equals("test8")) {

                imageView.setImageResource(R.drawable.icon_audio_guides);
            }

        } else {
            gridView = (View) convertView;
        }

        return gridView;
    }

    @Override
    public int getCount() {
        return channelTitles.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

}

这是我的片段布局的代码,包括gridview




    

    
    

最后是我的网格项的布局




    

        

        
    

    

        
    

    

        

        
    

如果有人能帮助我,我会非常感激.我已经研究了论坛,我遇到了使用gridlayout的建议,api 14及以上版本支持,但我正在开发api 9及以上版本.

谢谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有