嗨,
正如您在上面的图像中看到的,我创建了一个自定义视图作为我日历的项目。
在代码中,我重复了50次以创建日历。
服务器向我发送一个标志,显示应该选择哪一个(在这种情况下选择09 Jun)。
我的问题是当服务器发送一天不在屏幕上时(例如6月25日),该日期被选中(6月25日的背景改变)但在屏幕上我看到上面的图像(但现在是09月的背景像其他人一样变成白色)。
我正在寻找的东西是在屏幕中间显示25 Jun项目。我不知道它是如何可能的。
任何建议都将不胜感激。 mu自定义视图(小部件)的代码如下:
public class Calendar_Item extends RelativeLayout {
private LayoutInflater mInflater;
private RelativeLayout rlContainer;
private TextView tvMonth;
private TextView tvDay;
private ImageView imDot;
public Calendar_Item(Context context) {
super(context);
init(context);
}
public Calendar_Item(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public Calendar_Item(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout calendarView = (RelativeLayout) mInflater.inflate(R.layout.calendar_item, null);
addView(calendarView);
rlContainer = (RelativeLayout) calendarView.findViewById(R.id.cal_rlContainer);
tvMonth = (TextView) calendarView.findViewById(R.id.cal_month);
tvDay = (TextView) calendarView.findViewById(R.id.cal_date);
imDot = (ImageView) calendarView.findViewById(R.id.cal_dot);
}
public void setMonth(String month) {
tvMonth.setText(month);
}
public void setMonth(int resId) {
tvMonth.setText(resId);
}
public CharSequence getMonth() {
return tvMonth.getText();
}
public void setDay(String day) {
tvDay.setText(day);
}
public void setDay(int resId) {
tvDay.setText(resId);
}
public CharSequence getDay() {
return tvDay.getText();
}
public void showDot() {
imDot.setVisibility(View.VISIBLE);
}
public void hideDot() {
imDot.setVisibility(View.INVISIBLE);
}
public void setTextColor(int color) {
tvDay.setTextColor(color);
}
public void setBackgroundResource(int resid) {
rlContainer.setBackgroundResource(resid);
}
public void setBackgroundDrawable(Drawable d) {
rlContainer.setBackgroundDrawable(d);
}
public void setBackgroundColor(int color) {
rlContainer.setBackgroundColor(color);
}
}
布局XML代码:
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:layout_below = "@id/header"
android:fadingEdgeLength = "30dip"
android:fadingEdge = "horizontal"
android:scrollbars = "none" >
<LinearLayout
android:id = "@+id/llCalendarItems"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:orientation = "horizontal" >
</LinearLayout>
</HorizontalScrollView>
所有日历项都位于LinearLayout内。
答案 0 :(得分:0)
最后我找到了使用后延迟方法的方法。
hsv = (HorizontalScrollView) findViewById(R.id.hsvCalendar);
hsv.postDelayed(new Runnable() {
public void run() {
hsv.scrollTo(selectedDay * 100, 0);
}
}, 100L);