Android GridView会裁剪项目并且无法正确更新它们

时间:2016-03-05 01:21:29

标签: android gridview

我的GridView遇到了一些问题。首先,如果物品太高,它会裁掉最后一排。 有趣的是,我在我使用的自定义适配器的getView()中计算它们的高度。我只想让GridView显示5行,其高度取决于它的高度。将父高度和dayHeight打印到控制台会给出正确的值。

适配器类:

public View getView(int position, View convertView, ViewGroup parent) {
        View day = convertView;

        if (day == null) {     
            day = inflater.inflate(R.layout.calendar_day_gridcell, parent, false);    
        }

        int dayHeight = parent.getHeight() / 5; // month can spread over at most 5 weeks

        TextView tvDay = (TextView) day.findViewById(R.id.calendar_grid_cell);
        tvDay.setHeight(dayHeight);

        // set text and background colour of tvDay depending on position
}

包含GridView的片段的XML布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<

TextView />

<LineaLayout /> <!-- horizontal layout with 7 children -->

 <GridView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1.0"
            android:id="@+id/calendar_grid"
            android:numColumns="7"/>
</LinearLayout>

此外,我遇到的问题是,根据位置,我为网格单元格设置了某种文本颜色。

所以我想说我希望position < X1的所有元素都有蓝色文本,其他元素都是红色。当我生成一个新数据集(在公共成员函数中完成,然后调用notifyDataSetChanged())和X2 < X1时,所有position < X1项都有蓝色文本,即使其中一些应该有红色文字(即位置为X1 - X2的文本)。但是背景颜色设置正确。有什么想法吗?

修改

我发现裁剪是由android.support.design.widget.CoordinatorLayout引起的。我使用AndroidStudio设置了项目,并使用所述布局创建了activity_main.xml。将其更改为LinearLayout修复了裁剪问题。 但是,第二个问题仍然存在。

1 个答案:

答案 0 :(得分:0)

修复/解决它:

正如问题中已经说明的那样,CoordinatorLayout引起了裁剪并将其更改为另一种固定的布局。

对于文字颜色问题: 在确定哪个索引实际获得哪种颜色之前,我只是设置颜色让我们说活动颜色。