簡體   English   中英

ScrollView在Android中落后於按鈕

[英]ScrollView going behind button in Android

為什么滾動視圖位於此處的按鈕后面? 我希望scrollview的高度取決於設備,但無法使其正常工作,因為它始終位於按鈕后面。

在此處輸入圖片說明

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/detail_view"
    style="@style/DetailView">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical" >

        <TextView
            style="@style/TextView"
            android:id="@+id/textview_message_title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
        </TextView>

         <TextView
            style="@style/TextView"
            android:id="@+id/textview_message_date"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
        </TextView>

        <ScrollView 
            android:id="@+id/scrollview_message_text" 
            android:layout_height="wrap_content" 
            android:paddingBottom="20dip"
            android:layout_width="fill_parent"> 
             <TextView
                style="@style/TextView"
                android:id="@+id/textview_message_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </ScrollView>

    </LinearLayout>

     <LinearLayout style="@style/DetailView.Buttons"
          android:layout_width="match_parent"
        android:layout_height="wrap_content"
         android:orientation="vertical">

         <Button
            style="@style/Button"
            android:layout_marginTop="5dip"
            android:id="@+id/button_view_file"
            android:text="@string/viewfile"/>

    </LinearLayout>

</RelativeLayout>

發生這種情況是因為您使用相對布局作為根布局。 因此,兩個布局都放置在同一位置,但是按鈕布局在滾動視圖之后聲明,因此顯示在滾動視圖上方。如果您在滾動視圖之前定義按鈕,則會發生相反的情況

因此,您應該按如下所示定義它,以實現所需的功能。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/detail_view"
    style="@style/DetailView">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_above="@id/layout_bottom"
        android:orientation="vertical" >

        <TextView
            style="@style/TextView"
            android:id="@+id/textview_message_title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
        </TextView>

         <TextView
            style="@style/TextView"
            android:id="@+id/textview_message_date"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
        </TextView>

        <ScrollView 
            android:id="@+id/scrollview_message_text" 
            android:layout_height="wrap_content" 
            android:paddingBottom="20dip"
            android:layout_width="fill_parent"> 
             <TextView
                style="@style/TextView"
                android:id="@+id/textview_message_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </ScrollView>

    </LinearLayout>

     <LinearLayout 
          android:id="@+id/layout_bottom"
         style="@style/DetailView.Buttons"
          android:layout_width="match_parent"
        android:layout_height="wrap_content"
         android:orientation="vertical">

         <Button
            style="@style/Button"
            android:layout_marginTop="5dip"
            android:id="@+id/button_view_file"
            android:text="@string/viewfile"/>

    </LinearLayout>

</RelativeLayout>

或者您可以嘗試使用LinearLayout作為根視圖並進行設置

layout_height = "0dp" 
layout_weight = "1" 

到包含滾動視圖的布局

同時使用這兩種方法會使按鈕停留在布局的底部,而頂部布局將獲得所有剩余的高度。

祝好運

這是我認為您正在尋找的工作副本

1:將按鈕移至相對布局的頂部(添加了id)android:layout_alignParentBottom =“ true”

 <LinearLayout android:id="@+id/buttons"
              android:layout_alignParentBottom="true"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">

       <Button
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_marginTop="5dip"
            android:id="@+id/button_view_file"
            android:text="Button"/>

   </LinearLayout>

2:添加包含滾動的布局,更改寬度和高度以匹配父級,但(CRITICAL)添加android:layout_above =“ @ id / buttons”

  <LinearLayout
        android:layout_above="@id/buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/darker_gray"
        android:gravity="center"
        android:orientation="vertical" >

所以放在一起:

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


  <!-- Buttons at the top of layout but aligned to the bottom -->
  <LinearLayout android:id="@+id/buttons"
              android:layout_alignParentBottom="true"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">

    <Button
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_marginTop="5dip"
            android:id="@+id/button_view_file"
            android:text="Button"/>

 </LinearLayout>


 <!-- Linear layout to fill screen, but assigned to layout above the buttons -->
 <LinearLayout
        android:layout_above="@id/buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/darker_gray"
        android:gravity="center"
        android:orientation="vertical" >

     <TextView
             android:id="@+id/textview_message_title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
     </TextView>

     <TextView
            android:id="@+id/textview_message_date"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
     </TextView>

     <ScrollView
            android:id="@+id/scrollview_message_text"
            android:layout_height="wrap_content"
            android:paddingBottom="20dip"
            android:layout_width="fill_parent">
        <TextView
                android:id="@+id/textview_message_text"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
        </TextView>
    </ScrollView>

 </LinearLayout>



</RelativeLayout>

我刪除了樣式,以便可以在布局中看到它,並確保在發布之前可以正常工作。 希望這可以幫助。

相對布局允許您將元素彼此層疊。 因此,如果這不是您要查找的內容,則需要使用上面,下面的toLeft,toRight,to指令來將布局微調到正確的位置。

為什么滾動視圖位於此處的按鈕后面?

由於它在布局中ReletiveLayout在首位,因此ReletiveLayoutFrameLayout可用於提供Z順序,因此,布局中排在后面的每個子項都具有較高的z值,因此它會上升。添加android:layout_below = "@id/scrollview_message_text"考慮到reletivelayout的這一特性,請選擇最后一個linearlayout或按順序排列視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM