2010-12-20 15 views
11

私はアンドロイドに新しいので、これまでのところ解決策を探していましたが、これまでのところ運がありません。私は、下の写真のようなレイアウトを作成したいと思います。horizo​​ntalScrollView内のレイアウトは画面のサイズです

私は、画面のサイズであるlinearLayoutを持っています。次に、画面のサイズでも画面外の別のlinearLayoutを持っています。私は2つの仮想 "スクリーン"の間をスクロールすることができます。

enter image description here

あり、私はクールなスナップ効果を得ることができるようにscrollViewクラスを拡張する方法を説明した興味深い記事があるので、私はこれが仕事を得ることができれば、私のアプリは、多くの家の間で、スクロールのように感じるでしょう画面。

私は体重について、またscrollViewのfillViewport = "true"についても読んでいます。私は、linearLayoutsに画面を塗りつぶすためにhorizo​​ntalScrollViewでこれらを使用する方法を理解していないのが残念です。私はfill_parentとwrap_contentのすべての種類の組み合わせを試みましたが、無駄です。

この機能は、画面の変動性を考慮してサブビュー(各「スクリーン」の要素)を構築する限り、異なる画面を持つデバイス間でアプリの移植性を損なうことはありません。残念ながら

<HorizontalScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/HorizontalScrollView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:fillViewport="true"> 

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <EditText 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/txtTestBox" 
      > 
     </EditText> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <Button 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Button 1" 
     /> 

    </LinearLayout> 

</LinearLayout> 

</HorizontalScrollView> 

、でも近い私が探しています何のために取得していません。

は、ここで私がしようとしていたXMLの簡単な例です。うまくいけば、これを行うことができます...

ご協力ありがとうございました。

+0

私が参照していた 'スナップ'コードへのリンクを置くと便利だと思いました。 http://blog.velir.com/index.php/2010/11/17/android-snapping-horizo​​ntal-scroll/ – paradoX

+0

私が実装しようとしている機能の追加例は、次の場所にあります。 Android用Firefoxモバイルアプリ。ページの左側にあるタブバー(スクロールするまで画面外)は、画面の正確なサイズであるサブビューを持つスクロール可能なサーフェスを何らかの形で作成しているように見えます(サイズユーザーがスクロールすると、タブと画面を表示できます)。うまくいけば、これは私の質問を明確にします。 – paradoX

答えて

1

水平スクロールビューは無限に左右に拡大縮小できますので、「塗りつぶし親」は期待どおりに機能しません内部レイアウトについて説明します。内部レイアウトの幅を明示的に指定しようとしましたか?以下のような

何か:

<HorizontalScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/HorizontalScrollView01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:fillViewport="true"> 

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="400dp" 
    android:layout_height="fill_parent"> 

..... 

</LinearLayout> 


</HorizontalScrollView> 
+0

これは私が今取っているアプローチです。手動で各ビューの書式を設定しないようにしたいと考えましたが、これが唯一のオプションであるように見えます。ありがとう! – paradoX

0

具体的な理由はありますか?実質的に2つの画面を1つにする必要がありますか?どうしてそれらを別々にしないのですか? GestureDetectorをスクロールすると、スクロールジェスチャーが発生すると自動的に次の画面にスナップされます。

+0

良い質問ですが、私はこれがより直観的なインターフェースを可能にすると思うので、これに興味があります。私のインターフェースはやや複雑なので、次の画面にあるものを「覗いてみる」機能が役立つと思います。また、現時点では、できることを知るためにこれをどうやって行うのか知りたいです(私はこの問題に対して頭を抱えていますので、あきらめたくありません)。私が答えを見つけることができない場合、私はあなたが提案するようなものに落ちるつもりです。 – paradoX

+0

ところで、私が参照していた「スナップ」コードへのリンクは、ここで見つけることができます:http://blog.velir.com/index.php/2010/11/17/android-snapping-horizo​​ntal-scroll/ – paradoX

+0

これは本当の質問に対する答えではありません。うまくいけば、より良い答えがそこにあります。たぶん私はFirefoxのモバイルソースコードで答えを見つけることができます... – paradoX

1

See hereソリューションのLinearLayout幅を修正する必要はありませんScrollView.android:fillViewport="true"を使用することでした。

 <HorizontalScrollView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="5dp" 
      android:fillViewport="true" 
      android:orientation="vertical" 
      android:scrollbars="none"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical"> 
       //create your views 
      </LinearLAyout> 
</HorizontalScrollView> 
関連する問題