我有一个简单的GridView。以下是XML
<LinearLayout
android:id="@+id/calendar_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:orientation="vertical" >
<GridView
android:id="@+id/grid_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="7"
android:verticalSpacing="2dp"
android:rotationY="180" >
</GridView>
</LinearLayout>
我创建一个TextView并将其作为项目插入gridview中。基本上,我们的想法是创建一个自定义日历。
在适配器中我有
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(mContext);
textView.setText(days.get(position).toString());
textView.setRotationY(180);
textView.setGravity(Gravity.CENTER);
textView.setBackground(mContext.getResources().getDrawable(R.drawable.grey_box));
int x = mContext.getResources().getDimensionPixelSize(R.dimen.calendar_slot);
textView.setLayoutParams(new GridView.LayoutParams(x, x));
return textView;
}
R.dimen.calendar_slot等于30dp。
我无法理解的是,鉴于上述原因,为什么我的gridview如下所示? 。我需要将列合并在一起。但他们之间有空格。
有人可以帮忙吗?
答案 0 :(得分:1)
gridview列之间存在大量空间的原因是布局中的textview不占用网格视图提供的完整列空间
要避免此问题,您必须分别计算设备的屏幕宽度和高度,并将其除以列数和行数。这将为您提供单个textview所需的精确宽度和高度。将其设置为文本视图的尺寸。您将在行和列之间获得相等的空间
代码如下
DisplayMetrics displayMetrics=getResources().getDisplayMetrics();
screen_width=displayMetrics.widthPixels; //width of the device screen
screen_height=displayMetrics.heightPixels; //height of device screen
int view_width=screen_width/columns; //width for text view
int view_height=screen_height/rows; //height for text view
textview.getgetLayoutParams().width=view_width;
textview.getgetLayoutParams().height=view_height;