Я хочу сделать что-то вроде sticky menu, но я не имею ни малейшего понятия об этом. Мой XML-то вроде этого:Исправить элемент на ScrollView
<com.example.customscrollview.scrollview
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- I need sticky this element bellow! -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="210.0dip"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="210.0dip">
<!-- A lot of TextViews -->
<TextView...>
<TextView...>
<TextView...>
</LinearLayout>
</FrameLayout>
</com.example.customscrollview.scrollview>
Я пытался сделать это программно:
private void setTouchListeners() {
setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
boolean rt = false;
if (event.getAction() == MotionEvent.ACTION_MOVE) {
final View element = (View) findViewById(R.id.element);
LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT,
element.getHeight()
);
params.setMargins(0, (int) getScrollY(), 0, 0);
params.gravity = Gravity.TOP;
element.setLayoutParams(params);
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
childElement.requestLayout();
}
});
}
return rt;
}
});
}
Это работает, но не идеально. Когда ScrollView начнет бросать, движение не будет завершено, потому что MotionEvent
связывает только события касания. Поэтому я перезаписываю onScrollChanged
для выполнения той же функции (с некоторыми изменениями). Хорошо, теперь элемент остается в верхней части, но он не следует движению прокрутки, он становится «неустойчивым» до тех пор, пока прокрутка не остановится (результат отбрасывания и быстрой скорости прокрутки).
Каков наилучший способ сделать это?
вы можете остановиться, когда вы говорите _ _ – Elltz
@Elltz, я редактировал вопрос со ссылкой на то, что я хочу достичь, здесь: http://codepen.io/Guilh/pen/JLKbn. * * - это просто указать, кто является элементом. –