2016-12-26 22 views
1

我有以下活動。如何在ScrollView不工作時使以下Android活動可滾動?

我試圖封裝整個RelativeLayoutScrollView。但是,它不起作用,只顯示最後2張圖像。所以,我刪除它並張貼RelativeLayout有問題。請幫忙。我有2個虛擬視圖,在屏幕中心標記一條想象的垂直和水平線,並且所有圖像都相對於這些虛擬視圖對齊。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/content_front" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/colorWhite" 
     android:fillViewport="true" 
     android:gravity="center_vertical" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     tools:context=".FrontActivity" 
     tools:showIn="@layout/activity_front" 
     > 

     <View 
      android:id="@+id/dummy" 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" /> 

     <View 
      android:id="@+id/dummy2" 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" /> 

     <ImageView 
      android:id="@+id/all1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_above="@+id/part2" 
      android:layout_margin="20dp" 
      android:layout_toLeftOf="@+id/dummy" 
      android:layout_toStartOf="@+id/dummy" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/app_name" 
      android:scaleType="fitCenter" 
      android:src="@mipmap/all" /> 

     <ImageView 
      android:id="@+id/part1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_above="@+id/part3" 
      android:layout_margin="20dp" 
      android:layout_toEndOf="@+id/dummy" 
      android:layout_toRightOf="@+id/dummy" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/app_name" 
      android:scaleType="fitCenter" 
      android:src="@mipmap/part1" /> 

     <ImageView 
      android:id="@+id/part2" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_above="@+id/dummy2" 
      android:layout_marginBottom="0dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="20dp" 
      android:layout_marginTop="20dp" 
      android:layout_toLeftOf="@+id/dummy" 
      android:layout_toStartOf="@+id/dummy" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/app_name" 
      android:scaleType="fitCenter" 
      android:src="@mipmap/part2" /> 

     <ImageView 
      android:id="@+id/part3" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_above="@+id/dummy2" 
      android:layout_marginBottom="0dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="20dp" 
      android:layout_marginTop="20dp" 
      android:layout_toEndOf="@+id/dummy" 
      android:layout_toRightOf="@+id/dummy" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/app_name" 
      android:scaleType="fitCenter" 
      android:src="@mipmap/part3" /> 

     <ImageView 
      android:id="@+id/part4" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_below="@+id/dummy2" 
      android:layout_marginEnd="20dp" 
      android:layout_marginRight="20dp" 
      android:layout_marginTop="40dp" 
      android:layout_toLeftOf="@+id/dummy" 
      android:layout_toStartOf="@+id/dummy" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/app_name" 
      android:scaleType="fitCenter" 
      android:src="@mipmap/part4" /> 

     <ImageView 
      android:id="@+id/part5" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:layout_below="@+id/dummy2" 
      android:layout_marginLeft="20dp" 
      android:layout_marginStart="20dp" 
      android:layout_marginTop="40dp" 
      android:layout_toEndOf="@+id/dummy" 
      android:layout_toRightOf="@+id/dummy" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/app_name" 
      android:scaleType="fitCenter" 
      android:src="@mipmap/part5" /> 
    </RelativeLayout> 

有關如何使這更高效的任何提示也將不勝感激,謝謝。

回答

0

第一個提示:無論何時您希望虛擬視圖只是佈局中的空格,請使用Space視圖。

第二頂端if you're supporting API 17 and above,包括StartEnd預選賽,不支持(只是,這取決於你minSdk)LeftRight


這就是說,你在做什麼,可與一個TableLayoutGridLayout不使用假錨意見來完成。如果沒有它們,它仍然可以使用RelativeLayout,根據[0,0],[1,1]到[1,0]將[0,1]相對於[0,0],[1,0]的位置對齊]和[0,1]等等。

你沒有充分說明你的要求,所以我冒昧地使用GridLayout因爲代碼的簡單性和靈活性,以適應不同的配置/需要在未來(我也嫌疑這將是更便宜比對齊位置相對於其他視圖,但你必須檢查自己)。這裏我不包括LeftRight限定詞,因爲我可能會將minSdk設置爲17:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingStart="@dimen/activity_horizontal_margin" 
    android:paddingEnd="@dimen/activity_horizontal_margin" 
    android:columnCount="2" 
    android:layout_gravity="center_horizontal"> 
    <!-- Set columnCount according to your needs. --> 

    <ImageView 
     android:id="@+id/image_1" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:adjustViewBounds="false" 
     android:layout_margin="20dp" 
     android:contentDescription="@string/app_name" 
     android:scaleType="fitCenter" 
     android:src="@mipmap/icon_1" /> 

    <ImageView 
     android:id="@+id/image_2" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:adjustViewBounds="false" 
     android:layout_margin="20dp" 
     android:contentDescription="@string/app_name" 
     android:scaleType="fitCenter" 
     android:src="@mipmap/icon_2" /> 

<!-- Rinse and repeat. --> 

</GridLayout>