Thomas Ponzo
Thomas Ponzo

Reputation: 87

Android GridView Extra Spacing On The Right Side Of The View

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

Answers (1)

Happy Bhimani
Happy Bhimani

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

Related Questions