5
我希望有人能帮助我,我有一个由8个项目的适配器填充的网格布局。网格中有三列,这给我留下了两行,三列满,两列,最后一个空的空白。我附加了图片来详细说明我想要实现的目标。我希望能够拉伸最后一行的行列来填充gridview的宽度。这由适配器填充。跨越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
<?xml version="1.0" encoding="utf-8"?>
<Relative xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id = "@+id/dub_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/photo"/>
<GridView
android:id="@+id/channelsGrid"
android:background="@drawable/light_background"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="100dp"
android:numColumns="auto_fit"
android:gravity="center"
android:stretchMode="columnWidth"
android:layout_below="@+id/dub_photo">
</GridView>
</RelativeLayout>
最后的布局我的网格项代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/gridItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:padding="10dp">
<ImageView
android:id ="@+id/grid_item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<TextView
android:textColor="#000000"
android:id = "@+id/grid_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12dp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/grid_item_image"
android:layout_marginTop="10dp" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/horizontal_border"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/gridItem">
<ImageView
android:id = "@+id/hor_border"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/grid_line_horizontal"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_alignStart="@id/horizontal_border"
android:layout_height="wrap_content"
android:layout_above="@+id/horizontal_border">
<ImageView
android:id = "@+id/ver_border"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/grid_line_vertical"/>
<ImageView
android:id = "@+id/ver_border_dark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/grid_line_ondark_vert"
android:visibility="gone"/>
</RelativeLayout>
</RelativeLayout>
如果有人能帮助我,我会很感激。我研究过这个论坛,并且我遇到过使用gridlayout的建议,从api 14开始支持,但是我正在为api 9开发。
谢谢!
可能重复的[Android的 - GridView的:指定列跨度](http://stackoverflow.com/questions/1272742/android-gridview-specify-column-span) – Prateek
它不是重复的,它是如何重复?我正在提出一个具体的问题,我提供了我的资源。我也看了一下,在那个答案中除了说表格布局提供了跨越的帮助之外没有任何帮助。 –
用同一个基础问一个新问题并不能使它不同?如果它不可能使用GridView,那么你可能不会尝试使用Gridview来完成它! – Prateek