2017-02-21 132 views
1

我开始为Android进行开发,与iOS相比布局系统似乎相当困难。我有一个RelativeLayout与4 ImageView s。最正确的ImageView应该垂直在屏幕中间。其他3 ImageView应该放在它的左边。从LinearLayout(仍然不知道这是否是聪明的),只要我这条线RelativeLayout问题

android:layout_toLeftOf="@id/moto_icon" 

添加到左侧的项目(MOTO图标的第一个项目[cloud1],cloud1用于切换到RelativeLayout后第二个项目等),云的消失。

这是我的整个布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="de.manuel_schulze.motorradonline.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_main" /> 

    <LinearLayout 
     android:id="@+id/splashScreen" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/colorPrimary" 
     android:gravity="center" 
     android:orientation="vertical" 
     android:padding="5dp" 
     android:visibility="visible"> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginBottom="8dp" 
      android:orientation="horizontal"> 

      <ImageView 
       android:id="@+id/moto_icon" 
       android:layout_width="56dp" 
       android:layout_height="42dp" 
       android:layout_gravity="center" 
       android:src="@drawable/moto_icon"/> 

      <ImageView 
       android:id="@+id/cloud1" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:layout_gravity="center" 
       android:layout_toLeftOf="@id/moto_icon" 
       android:src="@drawable/cloud"/> 

      <ImageView 
       android:id="@+id/cloud2" 
       android:layout_width="12dp" 
       android:layout_height="12dp" 
       android:layout_gravity="center" 
       android:layout_toLeftOf="@id/cloud1" 
       android:src="@drawable/cloud"/> 

      <ImageView 
       android:id="@+id/cloud3" 
       android:layout_width="16dp" 
       android:layout_height="16dp" 
       android:layout_gravity="center" 
       android:layout_toLeftOf="@id/cloud2" 
       android:src="@drawable/cloud"/> 

     </RelativeLayout> 


     <ImageView 
      android:layout_width="240dp" 
      android:layout_height="64dp" 
      android:layout_gravity="center" 
      android:src="@drawable/motorrad_logo" /> 

    </LinearLayout> 

</android.support.design.widget.CoordinatorLayout> 

如果我运行仿真器中的3点云不露面的应用程序。在设计中,我只看到蓝色箭头。

enter image description here

你有固定RelativeLayout或替代一些想法?

编辑:我想是这样的:

enter image description here

+0

只是,来到了我的脑海里阅读你的XML一个简单的问题:替换为你内心的LinearLayout android:id="@+id/splashScreen"在content.xml文件中?毕竟你有这个包括声明:

+0

发布你想要的截图吗? – rafsanahmad007

+0

@CasualCoder:你说的没错,我把它移到了content_main中。首先,我希望它位于app_bar_main中,因为它应该显示为全屏。但是我不得不隐藏ActionBar。但图片仍然没有出现。 – Brudus

回答

1

试试下面的代码:你为什么不写“内容”代码:

<LinearLayout 
    android:id="@+id/splashScreen" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorPrimary" 
    android:gravity="center" 
    android:orientation="vertical" 
    android:padding="5dp" 
    android:visibility="visible"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp"> 

     <ImageView 
      android:id="@+id/moto_icon" 
      android:layout_width="56dp" 
      android:layout_height="42dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:src="@mipmap/ic_launcher" /> 

     <ImageView 
      android:id="@+id/cloud1" 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_toLeftOf="@id/moto_icon" 
      android:src="@mipmap/ic_launcher" /> 

     <ImageView 
      android:id="@+id/cloud2" 
      android:layout_width="12dp" 
      android:layout_height="12dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_toLeftOf="@id/cloud1" 
      android:src="@mipmap/ic_launcher" /> 

     <ImageView 
      android:id="@+id/cloud3" 
      android:layout_width="16dp" 
      android:layout_height="16dp" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_toLeftOf="@id/cloud2" 
      android:src="@mipmap/ic_launcher" /> 

    </RelativeLayout> 


    <ImageView 
     android:layout_width="240dp" 
     android:layout_height="64dp" 
     android:layout_gravity="center" 
     android:src="@mipmap/ic_launcher" /> 

</LinearLayout> 
+0

似乎不适合我。图像现在全部居中,但我仍然只看到moto_icon。 – Brudus

+0

它显示在我的情况下...删除这一行''并确保你替换了整个布局。 – rafsanahmad007

+0

现在感谢它的工作。我想我还是有一些缺失。 – Brudus

0

对于设置这个最右边的图片:

 android:layout_centerVertical="true" 

这将带来它中心垂直

和剩下的做你所做的和使用的android:layout_toLeftOf="@id/some_id"

但在这个场景中,您最右侧的图像将位于左侧,其他图像将不会显示。我并没有完全明白你想要做什么,而是为了使你的图像非常中心使用android:layout_centerInParent="true"或给它一个足够的左边距android:layout_marginLeft="@dimen/some_dimen"因此让图像在屏幕左侧显示。

或者simlpy使用线性布局,水平方向

希望它有助于

编辑:我看到你的图像,使用centerInParent属性。这就是你需要