2010-12-20 6 views
11

나는 안드로이드를 처음 접했고 이에 대한 해결책을 찾고 있지만 지금까지는 아무런 운이 없었습니다. 아래 그림과 같은 레이아웃을 만들고 싶습니다.화면의 크기 인 horizontalScrollView 내부의 레이아웃

화면의 크기 인 linearLayout을 원합니다. 화면의 크기이기도하지만 화면이 아닌 다른 linearLayout을 사용하고 싶습니다. 그런 다음 두 개의 가상 "화면"사이를 스크롤 할 수 있습니다.

enter image description here

가 나는 멋진 스냅 효과를 얻을 수 있도록있는 ScrollView 클래스를 확장하는 방법을 설명 흥미로운 기사가, 그래서 나는이 작업을 얻을 수 있다면, 내 응용 프로그램이 많은 집 사이에 스크롤처럼 느낄 것이다 화면.

가중치에 대해 읽었으며 scrollView의 fillViewport = "true"에 대해서도 읽었습니다. linearLayouts에 화면을 채우려면 horizontalScrollView와 함께 이들을 어떻게 사용하는지 이해할 수 없습니다. 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-horizontal-scroll/ – paradoX

+0

구현하고자하는 기능의 추가 예제는 다음에서 찾을 수 있습니다. 안드로이드 용 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 개의 화면이 있어야하는 특별한 이유가 있습니까? 왜 그들을 분리시키지 않는 것일까 요? GestureDetector을 확장 할 수 있으므로 스크롤 동작이 발생하면 자동으로 다음 화면으로 이동합니다.

+0

좋은 질문입니다. 더 직관적 인 인터페이스를 허용한다고 생각하기 때문에 이에 관심이 있습니다. 인터페이스가 다소 복잡하기 때문에 다음 화면의 내용을 '엿볼'수있는 기능이 유용하다고 생각합니다. 또한,이 시점에서, 나는 그것을 할 수있는 지식을 위해 이것을하는 법을 알고 싶다. (나는이 문제에 대해 내 머리를 잠시 동안 두드려서 포기하고 싶지 않다.)내가 답을 찾을 수 없다면, 나는 당신이 제안한 것과 같은 것으로 돌아갈 계획이다. – paradoX

+0

그건 그렇고, 내가 참조했던 '스냅'코드에 대한 링크는 http://blog.velir.com/index.php/2010/11/17/android-snapping-horizontal-scroll/에서 찾을 수 있습니다. – paradoX

+0

이것은 실제로 질문에 대한 답변이 아닙니다. 다행히도 더 나은 대답이있을 것입니다. 어쩌면 나는 파이어 폭스 모바일 소스 코드에서 대답을 찾을 수있다 ... – paradoX

1

See here이 솔루션의 LinearLayout 폭을 해결하기 위해 ScrollView. 필요가 없습니다에 android:fillViewport="true"를 사용하는 것이 었습니다.

관련 문제