2012-05-25 17 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); 
相關問題