2014-03-06 86 views
0

我有以下佈局,由於某種原因,ScrollView與覆蓋視圖重疊。 我不完全理解android中的weight和layout_weight屬性的全部用法。 我在想,這與我的問題有關。Android ScrollView重疊 - 重量?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ImageView 
     android:id="@+id/topbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     /> 

    <ImageView 
     android:id="@+id/secondbar" 
     android:adjustViewBounds="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/topbarr" 
     android:scaleType="fitXY" 

     /> 

    <ScrollView 
     android:id="@+id/buttonlistview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_below="@+id/secondbar" 
     android:scrollbarFadeDuration="0" 
     > 
    </ScrollView> 



</RelativeLayout> 
+0

你的問題不是由重量造成的(請參考下面的答案),但如果你想知道更多關於他們,你可以參考這裏http://stackoverflow.com/questions/3995825/what-does- androidlayout-weight-mean – ipohfly

+0

首先是在相對佈局中,weight屬性不起作用,如果你想添加比你可以使用線性佈局和維持多重支持功能的重量。 –

回答

1

首先,你應該有android:layout_alignParentTop="true"只有一個觀點,如果你想你的意見,是一個低於另一個。

其次,你只需要爲每個變量使用@+id一次。一旦宣佈,您可以通過@id來查閱。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ImageView 
     android:id="@+id/topbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     /> 

    <ImageView 
     android:id="@+id/secondbar" 
     android:adjustViewBounds="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/topbar" 
     android:scaleType="fitXY" 

     /> 

    <ScrollView 
     android:id="@+id/buttonlistview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/secondbar" 
     android:scrollbarFadeDuration="0" 
     > 
    </ScrollView> 

</RelativeLayout> 
0

走線佈局和調整的權重爲您所需的UI看起來 這裏將分三個相等的兩半2的ImageView和滾動型

<ImageView 
    android:id="@+id/topbar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" 
    android:layout_weight="1" 
    android:adjustViewBounds="true" 
    android:scaleType="fitXY" 
    android:src="@drawable/ic_launcher" 
    /> 

<ImageView 
    android:id="@+id/secondbar" 
    android:adjustViewBounds="true" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/topbarr" 
    android:scaleType="fitXY" 

    /> 

<ScrollView 
    android:id="@+id/buttonlistview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_below="@+id/secondbar" 
    android:scrollbarFadeDuration="0" 
    > 
</ScrollView> 

1

機器人的重量和layout_weight屬性可以只能用於Linearlayout或其子佈局。 至於layout_weight與LinearLayout的子視圖一起使用,它將比例中的子寬度或高度分開。 如果你給layout_weight你應該設置相應的寬度或高度爲0dp。 layout_weightSum與父層一起使用Linearlayout來定義可以分割多少比例。 這不會對你的問題做任何事情,因爲你使用的是一個RelativeLayout,所有的childViews都是從一個頂點開始的。你必須給在RelativeLayout的約束來調整你的觀點

而對於滾動型 經常使用是在垂直方向的LinearLayout中,呈現的是用戶可以通過滾動頂級項目垂直排列的兒童。

您絕對不應該將ScrollView與ListView一起使用,因爲ListView會負責自己的垂直滾動。