我有以下活动。
我尝试用RelativeLayout
封装整个ScrollView
。但是,它不起作用,只显示了最后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 :(得分:0)
第一个提示:只要您希望虚拟视图只是布局中的空格,请使用Space
视图。
第二个提示:if you're supporting API 17 and above,包含对Start
和End
限定符的支持,而不是(仅根据您的minSdk)Left
和Right
。
也就是说,你可以使用TableLayout
或GridLayout
来完成你所做的事情而不使用假锚视图。它仍然可以使用没有它们的RelativeLayout
,只需根据[0,0],[1,1]将[0,1]相对于[0,0],[1,0]的位置对齐[1,0]和[0,1]等等。
你没有完全明确你的要求,所以我会冒昧使用GridLayout
因为代码简单和灵活,以适应未来的不同配置/需求(我也怀疑< / em>它比相对于其他视图对齐位置便宜,但你必须自己检查一下)。在这里,我不包括Left
和Right
限定符,因为我可能会将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>