2012-05-25 16 views
0

enter image description hereAndroid,如何将选定的自定义视图放在屏幕中间?


嗨,
正如你可以在上面的图片查看,我创建了一个自定义视图我的日历项。 在代码中,我已经重复例如50次创建日历。

服务器向我发送一个标志,显示应该选择哪个标志(在这种情况下,选择09年6月)。

我的问题是,当服务器发送一个不在屏幕上的日子(例如6月25日),该日期被选中(25 Jun的背景变化),但在屏幕上我看到上面的图像(但现在的背景09君像其他人一样变成了白色)。

我正在寻找的东西是在屏幕中间显示25 Jun项目。我不知道它有可能如何。

任何建议,将不胜感激。亩自定义视图(部件)的代码是这样的:

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

你从哪里找到水平日历视图教程? – ManishSB

回答

0

最后我发现我的方式是使用后延时方法。

hsv = (HorizontalScrollView) findViewById(R.id.hsvCalendar); 
hsv.postDelayed(new Runnable() { 
    public void run() { 
    hsv.scrollTo(selectedDay * 100, 0); 
} 
}, 100L); 
相关问题