2012-02-29 4 views
0

私は、左端(上から下)に背の高い/狭いイメージと長いイメージを表示するための右側にあるHorizo​​ntalScrollViewを実装しました。Android:Horizo​​ntalScrollViewとイメージのラッピング

問題は、私がHorizo​​ntalScrollViewを適切に処理できなかったことです。画像の左側が表示されず(その方向にスクロールできません)、反対側の画像の境界をはるかに超えてスクロールすることができます。

一番左にスクロールされたスクリーンショット可能な限り(画像の左側が切り取られていることに注意してください)、できるだけ手前にあるすべての空白に注意し、ソース画像はすべてhttp://folk.ntnu.no/anderfo/pics/temp/android/(合計4画像)で提供されます。
(そのことについて申し訳ありません...私はここでそれらを見せたかったが、stackoverflowのに応じて、私は画像を投稿するに十分高い「評判」を持っていません。)

私はイメージのためにラップの異なる種類を試してみましたし、 Horizo​​ntalScrollView、しかし問題は常に同じです。

さらに、左の画像に問題があります。ラッピングは機能しないので、その両側に空白があります。

これは説明するのは難しいですので、私は代わりにあなたの問題を提示し、いくつかのサンプルコード与える:

XMLファイル(私はそれの多くのバージョンを作ったが、常に同じ問題を抱えてきました):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:adjustViewBounds="true" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:id="@+id/leftContainer" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:adjustViewBounds="true" 
     android:orientation="horizontal" > 
     <ImageView 
      android:id="@+id/ivExampleBar" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:paddingLeft="0dp" 
      android:paddingRight="0dp" 
      android:contentDescription="Bar on the left side" 
      android:src="@drawable/examplebar" /> 
    </LinearLayout> 

    <HorizontalScrollView 
     android:id="@+id/hscroll" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="left" 
     android:scrollbarFadeDuration="0"> 

     <LinearLayout 
       android:id="@+id/container" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:layout_gravity="center_horizontal" 
       android:orientation="horizontal" > 

       <ImageView 
       android:id="@+id/ivExampleImg" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:contentDescription="Big scrollable image" 
       android:src="@drawable/exampleimg" 
      /> 
     </LinearLayout> 
    </HorizontalScrollView> 

</LinearLayout> 

Javaファイル(私も画像の左部分を示すためにScrollToを試みたが、それは特定の解像度/電話でのみ動作します...):

import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.Window; 
    import android.view.WindowManager; 
    import android.widget.LinearLayout; 

    public class TestActivity extends Activity { 

     //private LinearLayout scrollContainer; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      // FULL SCREEN 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      this.setContentView(R.layout.testlayout); 

      //scrollContainer = (LinearLayout) findViewById(R.id.container); 
      //scrollContainer.scrollTo(-195, 0); 


     } 

     @Override 
     protected void onPause(){ 
      super.onPause(); 
      finish(); 
     } 
    } 

あなたはありますかこれらの問題の助けを借りる?

  • はそれが可能左画像の周りの空白を避けるため、画像
  • の国境にすべての方法をスクロールするために作るその周りに空白がありませんので、Horizo​​ntalScrollViewが私の画像をラップします

乾杯、
アンダース

ChristopheCVBからの助けを借りた後、XMLファイルを更新しました(まだ上のホワイトスペースの問題で両方の写真):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:adjustViewBounds="true" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/ivExampleBar" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:paddingLeft="0dp" 
     android:paddingRight="0dp" 
     android:layout_alignParentLeft="true" 
     android:contentDescription="Bar on the left side" 
     android:src="@drawable/examplebar" /> 

    <HorizontalScrollView 
     android:id="@+id/hscroll" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="left" 
     android:layout_toRightOf="@+id/ivExampleBar" 
     android:scrollbarFadeDuration="0"> 
     <ImageView 
      android:id="@+id/ivExampleImg" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:contentDescription="Big scrollable image" 
      android:src="@drawable/exampleimg" /> 
    </HorizontalScrollView> 
</RelativeLayout> 

答えて

0

はあなたがラップしたいすべてのビュー/レイアウトにwrap_contentを設定してみてください...

+0

...高さが画面の高さのと同一である必要がありますo ImageViewとhorizo​​ntalScrollViewのfill_parentに設定しました。 – anderfo

+0

したがって、画像ビューは親の同じ幅/高さを取得します。線図レイアウトは、相対配置を使用してみます。 – ChristopheCVB

+0

残りのスペースは線形レイアウトで塗りつぶされるので、イメージビューは使用可能なすべてのスペースを占有します。 – ChristopheCVB

0

この答えは私のために動作します:あなただけ設定する必要があり、基本的にMassive unwanted whitespace with LinearLayout in ScrollView

trueに、そのようなImageViewの者adjustViewBounds:

  <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:adjustViewBounds="true"/> 
は幅がのLinearLayoutの親以外のすべてのビューにwrap_contentに設定されている
+0

申し訳ありませんが、これを行うと違いはありません... – anderfo

関連する問題