我在使用此网格适配器中的项目布局时遇到了问题。
我正在使用caldroid
我在getview中扩充了我的单元格布局:
R.layout.calendar_view_date_cell.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlCalendarViewCell"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white1"
>
<TextView
android:id="@+id/tvCalendarDayNr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:padding="5dp"
android:text="10"
android:textSize="20sp" />
<View
android:id="@+id/vCellBorder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/selected_border" >
</View>
</RelativeLayout>
我想使用相对布局内的视图作为边框背景。
我正在使用此方法尝试更改单元格的背景(以显示日历的此单元格是已按下的单元格。)
@Override
public void onSelectDate(Date date, View view) {
View vCellBorder = (View) view.findViewById(R.id.vCellBorder);
vCellBorder.setBackgroundResource(R.drawable.selected_border);
Toast.makeText(getApplicationContext(), ""+(date),
Toast.LENGTH_SHORT).show();
}
奇怪的是,在我的date_cell预览中,我已经可以看到所选的边框。但是当我运行我的应用程序时,我只看到Relativelayout的背景(color / white1)。
如果我将方法改为:
@Override
public void onSelectDate(Date date, View view) {
view.setBackgroundResource(R.drawable.selected_border);
Toast.makeText(getApplicationContext(), ""+(date),
Toast.LENGTH_SHORT).show();
}
这在这里有效。但我不想这样,因为我希望能够为布局的不同层改变不同的背景。
答案 0 :(得分:1)
我怀疑这是因为基类视图不知道如何正确布局。
我会将View更改为ImageView并将其放置在布局中的textview之前,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlCalendarViewCell"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white1"
>
<ImageView
android:id="@+id/vCellBorder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/selected_border" />
<TextView
android:id="@+id/tvCalendarDayNr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:padding="5dp"
android:text="10"
android:textSize="20sp" />
</RelativeLayout>
同样在代码中我会隐藏/取消隐藏视图而不是更改其可绘制的
所以
@Override
public void onSelectDate(Date date, View view) {
View vCellBorder = (View) view.findViewById(R.id.vCellBorder);
vCellBorder.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), ""+(date),
Toast.LENGTH_SHORT).show();
}
显然,视图将以GONE或INVISIBLE
开始答案 1 :(得分:0)
我的观点是获得0dp的宽度和高度。这就是为什么背景没有显示出来的原因。 最后,我将视图更改为线性布局,并将我的textview放在其中。和match_parent现在正在工作。 0dp正在给我提示。