어떤 새로운보기를 통해 추가 될 때 자동으로있는 ScrollView의 하단으로 스크롤됩니다 달성하기 위해 노력하고있어 :Alernative
: 이것은 내가 현재 가지고있는 코드는mContainerView.addView(newView);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String input = et.getText().toString();
if (input != null && input.length() > 0) {
findViewById(android.R.id.empty).setVisibility(View.GONE);
addItem(input);
et.setText(null);
ScrollToBottom();
}
}
});
private void ScrollToBottom() {
mScrollView.postDelayed(new Runnable() {
@Override
public void run() {
mScrollView.smoothScrollTo(0, mScrollView.getBottom());
}
}, 300);
}
private void addItem(String name) {
final ViewGroup newView = (ViewGroup) LayoutInflater.from(this).inflate(
R.layout.list_item_example, mContainerView, false);
((TextView) newView.findViewById(android.R.id.text1)).setText(name);
newView.findViewById(R.id.delete_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mContainerView.removeView(newView);
if (mContainerView.getChildCount() == 0) {
findViewById(android.R.id.empty).setVisibility(View.VISIBLE);
}
}
});
mContainerView.addView(newView);
}
내가 postDelayed를 사용하는 이유는 지연이 없기 때문에 새로운 뷰가 충분히 빨리 그려지지 않고 아래쪽에서 새 항목의 높이를 뺀 값으로 스크롤되기 때문입니다. 지연 시간을 예를 들어 100ms로 떨어 뜨리면 스크롤이 새 항목 아래로 약 1/3 정도 끝나기 때문에이 경우를 알 수 있습니다. 시행 착오 후 다른 값으로 300ms가 원하는 결과를 얻은 번호입니다.
더 좋은 방법이 있나요? - 현재 내 방법이 작동하지만 가장 깨끗한 옵션으로 보이지 않습니다. 나는 아직도 내가 안드로이드/자바 프로그래밍 비교적 새로운 해요
, 어디 선가 뭔가를 놓친 것 확신 ...
나는 또한 어떤없이, 또한 fullScroll (View.FOCUS_DOWN)을 시도 언급해야한다 행동의 변화. 더 부드러운 애니메이션을 선호했기 때문에 smoothScroll 옵션을 바꿨습니다.
"지연 시간을 예를 들어 100ms로 떨어 뜨리면 스크롤은 새로운 항목 아래로 약 3 분의 1 정도 끝나기 때문에 종료됩니다. 감각. 새 항목의 크기가 한 번에 한 픽셀 씩 증가하는 것과는 다릅니다. "나는 여전히 Android/Java 프로그래밍에 비교적 새로운 기술입니다."- 전반적인 UI 목표는 무엇입니까? 'ScrollView'는 악의가 아니지만 상대적으로 드문 선택이며 더 나은 옵션이있을 수 있습니다 (예 : 스크립트 모드의'ListView '). – CommonsWare
사용자 입력에 대한 edittext와 해당 입력을 '제출'하는 버튼이있는 Activity의 아래쪽에 RelativeLayout이 고정되어 있습니다. 단추를 누르면 위의 코드대로 '목록'이 업데이트됩니다. listview와 listadapter가 더 좋은 옵션이 될 수 있습니까? 나는 기본적으로 자습서를 따랐고 과거에는 ListFragments 및 어댑터에 대한 경험이 있지만 필요에 맞게 조정했습니다. – Karl