私はscrollViewでAndroidでアクティビティを持っています。 scrollViewは、いくつかの項目(テキスト、レイアウト、iamgesなど)を持つ固定レイアウトを表示します。アクティビティがロードされると、レイアウトが表示され、イメージのダウンロードが開始されます。イメージがダウンロードされると、メインレイアウトの先頭または最上部にあるRelativeLayoutにスクロールビューを追加して表示します。scrollViewが更新されないようにする方法
相対レイアウトの高さはWRAP_CONTENTに設定されているため、画像が表示される前の高さはゼロです。画像が追加されると、画像の高さに合わせてサイズが変更されます。問題は、画像がロードされ、画像のRelativeLayoutが画面外にある場合、スクロールビューの上端Yが変化し、コンテンツが下に移動する(コンテンツを見ている人に気を散らす)ということです。
これを修正するには、ダウンロードした画像の高さを確認し、画像が画面外にあるかどうかを確認してください。scrollView.scrollBy(0, imageHeight);
を呼び出すことによってscrollViewのトップを調整します。これで問題は解決しますが、レイアウトにイメージを追加する(コンテンツは下に移動する)、scrollViewトップを調整する(コンテンツは元の位置に戻る)など、2つのアクションの間の画面の位置を変更することができます。ここでは、コードであることを「修正」scrollview位置:私はこれがロード/調整プロセスの前に画面の更新やscrollViewの更新を無効にした後、それを有効にする方法で修正するために必要なもの
public void imageLoaded(final ImageView img) {
img.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final int imgHeight = img.getMeasuredHeight();
// image is loaded inside a relative layout - get the top
final RelativeLayout parent = (RelativeLayout) img.getParent();
final int layoutTop = parent.getTop();
// adjust the layout height to show the image
// 1. this changes the scrollview position and causes a first 'flickering'
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, imgHeight);
parent.setLayoutParams(params);
// adjust scrollbar so that the current content position does not change
// 2. this corrects the scrollview position but causes a second 'flickering'
// scrollY holds the scrollView y position (set in the scrollview listener)
if (layoutTop < scrollY)
scrollview.post(new Runnable() {
public void run() {
scrollview.scrollBy(0, imgHeight);
}
});
img.setVisibility(View.VISIBLE);
}
。
誰でもこの方法を知っていますか?
プログラマーはソースコードを読む方が良いです。 ; p – user1506104
調整プロセスを示すコードが追加されました – user501223