Reputation: 87
The gridview isn't full match_parent because there is a white tiny space on the right side of the gridview. How can I remove this tiny white space? example: http://prntscr.com/ofa94t
My layout that I used for the gridview:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_days"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#007399"
android:orientation="horizontal"
android:paddingTop="4dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:paddingBottom="4dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Zon"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Man"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Din"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Woe"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Don"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Vrij"
android:textColor="@android:color/white"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_weight="1"
android:gravity="center"
android:text="Zat"
android:textColor="@android:color/white"
android:textStyle="bold" />
</LinearLayout>
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gridview"
android:stretchMode="columnWidth"
android:gravity="center_horizontal"
android:numColumns="7"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"/>
</LinearLayout>
My Adapter where I can stretch the height of the view but not the width:
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
Date monthDate = dates.get(position);
Calendar dateCalendar = Calendar.getInstance();
dateCalendar.setTime(monthDate);
int parentHeight= parent.getHeight();
int DayNo = dateCalendar.get(Calendar.DAY_OF_MONTH);
int displayMonth = dateCalendar.get(Calendar.MONTH) + 1;
int displayYear = dateCalendar.get(Calendar.YEAR);
int currentMonth = currentDate.get(Calendar.MONTH) +1;
int currentYear = currentDate.get(Calendar.YEAR);
View view = convertView;
if (view == null) {
view = inflater.inflate(R.layout.layout_singleview_calendar, parent, false);
}
if (displayMonth == currentMonth && displayYear == currentYear) {
view.setBackgroundColor(getContext().getResources().getColor(R.color.green));
} else {
view.setBackgroundColor(Color.parseColor("#ffffff"));
}
TextView Day_Number = view.findViewById(R.id.calendar_day);
Day_Number.setText(String.valueOf(DayNo));
view.setMinimumHeight(parentHeight/6);
return view;
}
I found this Android GridView imperfection, how to remove extra white space to the right but nothing seems to work.
Upvotes: 0
Views: 118
Reputation: 206
Remove Left, Right margin from Grid view ,
OR
You can make separate grid view cell layout which contain only one cell of calendar and other XML activity which contain grid view then fetch it from java class as shown below
***** gridview.xml *****
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/gridview"
android:numColumns="7">
</GridView>
**** gridview_layout.xml ****
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lr1"
android:layout_width="match_parent"
android:layout_height="@dimen/margin_45dp"
android:orientation="vertical">
<TextView
android:id="@+id/calendar_day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="1"
android:textColor="@color/primary_black_text"
android:textSize="13sp"
android:textStyle="bold">
</TextView>
<TextView
android:id="@+id/events_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/accent"
android:textSize="9sp"
android:textStyle="bold" />
**** java file ****
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Date monthDate = dates.get(position);
Date today = new Date(); //*******
Calendar dateCalendar = Calendar.getInstance();
dateCalendar.setTime(monthDate);
int DayNo = dateCalendar.get(Calendar.DAY_OF_MONTH);
int displayMonth = dateCalendar.get(Calendar.MONTH) + 1;
int displayYear = dateCalendar.get(Calendar.YEAR);
View view = convertView;
if (view == null)
view = inflater.inflate(R.layout.calendar_cell_layout, parent, false);
if (monthDate.getMonth() != today.getMonth() || monthDate.getYear() != today.getYear()) {
TextView myTv = view.findViewById(R.id.calendar_day);
myTv.setTextColor(getContext().getResources().getColor(R.color.secondary_text));
} else if (monthDate.getDate() == today.getDate()) {
TextView myTv = view.findViewById(R.id.calendar_day);
myTv.setBackground(getContext().getDrawable(R.drawable.roundshape));
myTv.setTextColor(getContext().getColor(R.color.icons));
}
TextView Day_Number = view.findViewById(R.id.calendar_day);
TextView EventNumber = view.findViewById(R.id.events_id);
Day_Number.setText(String.valueOf(DayNo));
Calendar eventCalendar = Calendar.getInstance();
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < events.size(); i++) {
eventCalendar.setTime(ConvertStringToDate(events.get(i).getDATE()));
if (DayNo == eventCalendar.get(Calendar.DAY_OF_MONTH)
&& displayMonth == eventCalendar.get(Calendar.MONTH) + 1
&& displayYear == eventCalendar.get(Calendar.YEAR))
{
arrayList.add(events.get(i).getEVENT());
EventNumber.setText(arrayList.size() + " Events");
EventNumber.setBackgroundColor(000000);
}
}
return view;
}
Hope this will help you! Thanks!!
Upvotes: 2