0

我有一個應用程序,其中滾動視圖(它內部的相對佈局)佔據整個屏幕(fill_parent)。但不是在電話結束時結束,我希望在底部有一個片段,並使ScrollView佈局停止在片段的頂部。我認爲這可能與高度有關,但無法真正弄清代碼。請看我的imgur圖像來獲得我的想法。 Imgur_Image, press here如何設置我的scrollView佈局高度到一個片段的頂部

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="wrap_content" 
 
    android:fillViewport="true"> 
 

 

 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:layout_width="match_parent" android:layout_height="match_parent"><![CDATA[ 
 

 

 
    tools:context="c.timno.smsgsm.MainActivity"> 
 

 

 

 
    ]]> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:gravity="center" 
 
     android:text="status?" 
 
     android:id="@+id/skicka" 
 
     android:hint="Status?" 
 

 
     android:layout_marginTop="38dp" 
 
     android:layout_below="@+id/buttonanvandare" 
 
     android:layout_centerHorizontal="true" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="på" 
 
     android:id="@+id/skickaaon" 
 
     android:layout_marginEnd="36dp" 
 
     android:layout_below="@+id/textViewlarm" 
 
     android:layout_alignEnd="@+id/skicka" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Av" 
 
     android:id="@+id/skickaaoff" 
 

 
     android:layout_below="@+id/textViewlarm" 
 
     android:layout_toEndOf="@+id/skickarela1" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Relä 1" 
 
     android:id="@+id/skickarela1" 
 
     android:layout_alignTop="@+id/skickarela2" 
 
     android:layout_alignStart="@+id/skickaaon" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Relä 2" 
 
     android:id="@+id/skickarela2" 
 
     android:layout_below="@+id/textView" 
 
     android:layout_toEndOf="@+id/skickarela1" /> 
 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:text="Aktivera" 
 
     android:gravity="center" 
 
     android:textSize="29dp" 
 
     android:id="@+id/textView" 
 
     android:layout_below="@+id/skickaaon" 
 
     android:layout_alignParentStart="true" /> 
 

 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:gravity="center" 
 

 
     android:text="Larm" 
 
     android:textSize="29dp" 
 
     android:id="@+id/textViewlarm" 
 
     android:layout_below="@+id/skicka" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:gravity="center" 
 
     android:text="Avaktivera" 
 
     android:textSize="29dp" 
 
     android:id="@+id/textView3" 
 
     android:autoText="false" 
 
     android:layout_below="@+id/textView" 
 
     android:layout_alignEnd="@+id/buttoninstallator" 
 
     android:layout_marginTop="46dp" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Relä 1" 
 
     android:id="@+id/skickatrela1off" 
 
     android:layout_below="@+id/textView3" 
 
     android:layout_toStartOf="@+id/skickatrela2off" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Relä 2" 
 
     android:id="@+id/skickatrela2off" 
 
     android:layout_alignTop="@+id/skickatrela1off" 
 
     android:layout_alignStart="@+id/skickarela2" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Användare" 
 
     android:id="@+id/buttonanvandare" 
 
     android:layout_alignParentStart="true" 
 
     android:layout_toStartOf="@+id/skickaaoff" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Installation" 
 
     android:id="@+id/buttoninstallator" 
 
     android:layout_alignParentTop="true" 
 
     android:layout_alignParentEnd="true" 
 
     android:layout_toEndOf="@+id/buttonanvandare" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="status?" 
 
     android:id="@+id/statustxt" 
 
     android:layout_alignParentBottom="true" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="aon" 
 
     android:id="@+id/aon" 
 
     android:layout_alignParentStart="true" 
 
     android:layout_alignParentBottom="true" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="aoff" 
 
     android:id="@+id/aoff" 
 
     android:layout_alignParentStart="true" 
 
     android:layout_below="@+id/statustxt" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="on*1*" 
 
     android:id="@+id/rela1txxt" 
 
     android:layout_alignParentBottom="true" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="On*2*" 
 
     android:id="@+id/rela2onn" 
 
     android:layout_alignParentBottom="true" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="off*2*" 
 
     android:id="@+id/rela2offtxt" 
 
     android:layout_alignParentBottom="true" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="off*1*" 
 
     android:id="@+id/offrela1txt" 
 
     android:layout_alignParentBottom="true" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:gravity="center" 
 
     android:text="Värmestyrning" 
 
     android:textSize="33dp" 
 
     android:id="@+id/textView8" 
 
     android:layout_below="@+id/skickatrela1off" 
 
     android:layout_marginTop="25dp" /> 
 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:gravity="center" 
 
     android:text="Komfortvärme" 
 
     android:textSize="29dp" 
 
     android:id="@+id/textView9" 
 
     android:layout_below="@+id/textView8" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Heaton" 
 
     android:id="@+id/btnHeaton" 
 
     android:layout_below="@+id/textView9" 
 
     android:layout_alignEnd="@+id/skickatrela1off" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Heatoff" 
 
     android:id="@+id/btnHeatoff" 
 
     android:layout_below="@+id/textView9" 
 
     android:layout_alignStart="@+id/skickatrela2off" /> 
 

 
    <TextView 
 
     android:layout_width="match_parent" 
 
     android:layout_height="wrap_content" 
 
     android:gravity="center" 
 
     android:text="Underhållsvärme" 
 
     android:textSize="29dp" 
 
     android:id="@+id/textView10" 
 
     android:layout_below="@+id/btnHeaton" 
 
     android:layout_centerHorizontal="true" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Termon" 
 
     android:id="@+id/btnTermon" 
 
     android:layout_below="@+id/textView10" 
 
     android:layout_toStartOf="@+id/btnHeatoff" /> 
 

 
    <Button 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:text="Termoff" 
 
     android:id="@+id/btnTermoff" 
 
     android:layout_alignBottom="@+id/btnTermon" 
 
     android:layout_toEndOf="@+id/btnTermon" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="Heaton" 
 
     android:id="@+id/txtHeaton" 
 
     android:layout_alignTop="@+id/statustxt" 
 
     android:layout_alignEnd="@+id/statustxt" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="Heatoff" 
 
     android:id="@+id/txtHeatoff" 
 
     android:layout_alignBottom="@+id/statustxt" 
 
     android:layout_alignParentStart="true" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="Termon" 
 
     android:id="@+id/txtTermon" 
 
     android:layout_alignBaseline="@+id/aoff" 
 
     android:layout_alignBottom="@+id/aoff" 
 
     android:layout_alignEnd="@+id/statustxt" /> 
 

 
    <TextView 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" 
 
     android:textAppearance="?android:attr/textAppearanceSmall" 
 
     android:text="Termoff" 
 
     android:id="@+id/txtTermoff" 
 
     android:layout_alignTop="@+id/statustxt" 
 
     android:layout_alignEnd="@+id/txtHeatoff" /> 
 

 
     <fragment 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:name="c.timno.smsgsm20.SecondFragment" 
 
      android:id="@+id/fragmentsms" 
 
      android:layout_below="@+id/textView8" 
 
      android:layout_alignParentStart="true" 
 
      tools:layout="@layout/second_layout" 
 
      android:layout_above="@+id/textView10" /> 
 

 

 
    </RelativeLayout> 
 
</ScrollView>

回答

1

我建議將ScrollViewFragment放入一個新的頂層元素中,然後使用該元素中的相應方法來調整每個元素的大小和位置。

例如,使用RelativeLayout

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    ...> 
    <ScrollView 
    android:id="@+id/scrollview" 
    android:layout_above="@+id/frag" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    ...> 
     <RelativeLayout 
     android:paddingBottom="50dp" 
     ...> 
      ... 
     </RelativeLayout> 
    ... 
    </ScrollView> 
    <Fragment 
     android:id="@+id/frag" 
     android:layout_alignParentBottom="true" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     ...> 
    ... 
    </Fragment> 
</RelativeLayout> 

(請注意,在ScrollViewRelativeLayout底部填充的Fragment這樣的高度的ScrollView的內容沒有得到隱藏在背後相匹配在Fragment

你也可以做到這一點使用LinearLayout作爲具有android:orientation="vertical"屬性的父元素,以及ScrollViewFragment每得到一個適當的layout_weight屬性,但這不是乾淨的恕我直言,所以我會留給你,如果你想這樣做。

+0

很高興爲您提供幫助。 :) – matt

0
<ScrollView> 

<RelativeLayout> 
    //main content 
</RelativeLayout> 
    <FrameLayout android:alignParentBottom="true"/> load fragment here dynamically(or not) 

</ScrollView> 

這爲我工作。檢查this question