1

こんにちは私は画面の高さに対応する高さのImageView(背景)を持っています。画像ビューが全体の背景を占め、ユーザーが右にスクロールや画像全体を見るために左にすることができます - この前ImageViewが画面よりも大きく表示されます

は、これがうまく働いた。この

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="wrap_content" 
android:layout_height="match_parent"> 

<HorizontalScrollView 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/songDetails_songImage" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" 
     android:contentDescription="@string/songDetails_cd_songCover" 
     app:srcCompat="@drawable/default_song_cover" /> 

</HorizontalScrollView> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
... 

のように行われていました。

私の目標は、(ユーザーがスクロールしないように)水平ビューを取り除く必要があるが、Horizo​​ntalScrollViewをフレーム/相対レイアウト(幅をwrap_contentに設定)に変更するたびに、スクロールをアニメーション化して、画像ビューは画面に合わせて縮小されます。

それは、デバイスの画面よりも大きいままになるように?

私は、スクロールするためにカスタムアニメーションを使用することができます(トリミングなし)(高さは、画面のそれに一致して)そのままImageViewの幅を維持する方法があります右。

私も同様の質問をしましたが、この場合にはうまくいくものは見つかりませんでした。

答えて

2

あなたができることは、Horizo​​ntalScrollViewのonTouchListenerをオーバーライドしようとすることです。例えば

、このような何か:

scrollView.setOnTouchListener(new OnTouch()); 

private class OnTouch implements OnTouchListener 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    return true; 
    } 
} 

あなたはおそらくまだプログラムでそれをスクロールすることができながら、これはHorizo​​ntalScrollViewをスクロールからユーザーを無効にします。

+0

私はそれについて考えましたが、Horizo​​ntalScrollViewを使用せずにそれを行う方法はありませんでしたか? –

+0

わかりません。 Horizo​​ntalScrollViewを削除すると、画像が縮小されたということになります。あなたはImageViewのScaleTypeで遊んでみることができます。使用可能なScaleTypesのいずれかが機能している場合、ImageViewでtranslationXアニメーションを使用して 'スクロール'を試みることができます。 – JaapM

+0

おそらくScaleTypeとAdjustViewBoundsのすべての組み合わせが試され、すべてのものがデバイス画面に合っているようです。それは私がxxhdpiのドロウアブルフォルダに同じ画像のカップルバージョンを持っているのですが、私がscaleTypeを変更すると、スクリーンに収まる小さな画像が選択されて表示されます。 –

関連する問題