我的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修复了裁剪问题。
但是,第二个问题仍然存在。
答案 0 :(得分:0)
修复/解决它:
正如问题中已经说明的那样,CoordinatorLayout
引起了裁剪并将其更改为另一种固定的布局。
对于文字颜色问题: 在确定哪个索引实际获得哪种颜色之前,我只是设置颜色让我们说活动颜色。