2017-09-15 24 views
0

画面の上部に「fixed_space」を、fixed_spaceの下に画面の下に「scrollview」を配置します。残りの画面はコンテナ "rest_space"です。Android Scrollviewのコンテンツサイズが小さい場合は

残念ながら、コンテンツが大きすぎる/スクロール可能な場合、私のscrollviewの高さは100dp(fixed_spaceの場合)です。

ConstraintLayoutとRelativeLayoutで同じことを達成しようとしましたが、同じ結果が得られました。 scrollviewの高さが100dpになる理由は何ですか?

EDIT:スクロールビューには、必要なだけのスペースが必要です。

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

    <View 
     android:id="@+id/fixed_space" 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:background="@android:color/holo_red_dark" /> 

    <View 
     android:id="@+id/rest_space" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@android:color/black" /> 

    <ScrollView 
     android:id="@+id/scrollview" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/holo_green_dark" 
     android:fillViewport="true"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="START OF SCROLLVIEW \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nMIDDLE OF SCROLLVIEW \n\n\n\n\n\n\n\n\n\n\n\nEND OF SCROLLVIEW" /> 

    </ScrollView> 
</LinearLayout> 
+0

は、あなたが私にfixed_spaceの比率、rest_spaceに知らせるとしたいscrollview –

+0

問題でなければなりません "rest_space" ビューを削除しようとしています。 –

+0

@PierGiorgioMisley ScrollViewは必要なだけのスペースを取る必要があります。 rest_spaceを削除すると、scroll_viewはfixed_spaceとbottom_screenの間のスペース全体を占有します。 – prosto

答えて

0

これを試してみてください:?

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

<View 
    android:id="@+id/fixed_space" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:background="@android:color/holo_red_dark" /> 


<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <View 
     android:id="@+id/rest_space" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/scrollview" 
     android:background="@android:color/black" /> 

    <ScrollView 
     android:id="@+id/scrollview" 
     android:layout_alignParentBottom="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/holo_green_dark" 
     android:fillViewport="true"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="START OF SCROLLVIEW \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nMIDDLE OF SCROLLVIEW \n\n\n\n\n\n\n\n\n\n\n\nEND OF SCROLLVIEW" /> 

    </ScrollView> 


</RelativeLayout> 


</LinearLayout> 
+0

テキストをandroid:text = "Start of ScrollView"に設定すると、rest_spaceがなく、scrollviewは画面の下部に表示されます。 – prosto

+0

私は編集を行いました。それを試してください。 –

+0

それは動作します! 最後にLinearLayoutの終了タグを追加してください。 – prosto

0

[OK]を、私はこれはあなたのprobemを解決すべきだと思う:

まず、私はRelativeLayoutを使用して開始。固定スペースを上部に、スクロールビューを下部に揃えるために私はそれを行いました。 Androidができ、

あなたはwrap_contentと重量のものと見るとScrollViewを使用する場合:その後、私はので、私はwrap_contentを使用することができ、これはトリッキーな部分であるのLinearLayoutのためのビューを変更し、その中のTextViewを置く

参照がないため、画面を描画するために必要な計算を行いません。 Androidのテキストのサイズを知っているので、私は参照を与えるwrap_content自体でTextViewを置くとき。

TextViewを使用する必要はありませんが、Androidに参照できるものが必要です。

この場合、スクロールビューは引き伸ばされ、LinearLayoutではなく伸びます。もしあなたが二番目のものをつかまえたいのであれば、スクロールビューに固定の高さを設定する必要があるのでしょうか?

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

<View 
    android:id="@+id/fixed_space" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_alignParentTop="true" 
    android:background="@android:color/holo_red_dark" /> 

<LinearLayout 
    android:id="@+id/rest_space" 
    android:layout_below="@+id/fixed_space" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/black"> 

    <TextView 
     android:text="Test" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 

<ScrollView 
    android:id="@+id/scrollview" 
    android:layout_below="@id/rest_space" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/holo_green_dark" 
    android:layout_alignParentBottom="true"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="START OF SCROLLVIEW \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nMIDDLE OF SCROLLVIEW \n\n\n\n\n\n\n\n\n\n\n\nEND OF SCROLLVIEW" /> 

</ScrollView> 
</RelativeLayout> 
+0

ありがとうございます。しかし、私はおそらく私の質問をあまり説明していません。 ScrollViewは動的な高さを持つ必要があります。したがって、Scrollview内のTextViewに「Start of the Scrollview」だけがある場合、scrollviewの高さは1行の高さになり、画面の下部に残ります。 "rest_space"の高さは "fixed_space"と "scrollview"の間の残りのスペースをとります。 – prosto

関連する問題