我希望有人可以帮助我,我有一个网格布局,由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及以上版本.
谢谢!