2012-05-25 5 views
0

enter image description hereAndroid, Как отобразить выбранный пользовательский вид в середине экрана?


Привет,
Как вы можете видеть на картинке, я создал настраиваемое представление, как в качестве элемента моего календаря. В коде я повторяю его, например, 50 раз, чтобы создать календарь.

Сервер отправляет мне флаг, который показывает, какой из них должен быть выбран (в этом случае выбирается 09 июня).

Моя проблема в том, что сервер отправляет день, который отсутствует на экране (например, 25 июня). Эта дата становится выбрана (фон 25 июня изменяется), но на экране я вижу изображение выше (но теперь фон 09 Jun изменился на белый цвет, как и другие).

Вещь, которую я ищу, показывает 25 июня в середине экрана. Я понятия не имею, как это возможно.

Любое предложение будет оценено. Код мю пользовательского вида (виджета), как это:

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

Наконец-то я нашел способ, которым пользуется метод post post.

hsv = (HorizontalScrollView) findViewById(R.id.hsvCalendar); 
hsv.postDelayed(new Runnable() { 
    public void run() { 
    hsv.scrollTo(selectedDay * 100, 0); 
} 
}, 100L); 
Смежные вопросы