2015-09-22 60 views
1

我試圖重現這個空間:中心的LinearLayout篩選,填寫上面的ImageView

enter image description here

我需要集中到屏幕LinearLayoutLinearLayout上方的空格應填寫(除了一些填充)ImageView

例如,如果屏幕是一個比上面的圖片越小,ImageView應該相應調整,如:

enter image description here

我怎樣才能做到這一點?

這裏是一個模板,我創造了讓自己開始:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="25dp" 
    android:paddingRight="25dp"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageView" 
     android:background="@drawable/logo" /> 

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

     ... 

    </LinearLayout> 

</LinearLayout> 

回答

1

您需要的RelativeLayout能在屏幕和中心來定位的LinearLayout上面的圖像。

android:layout_centerInParent="true" 

確保LinearLayout位於屏幕的中心。

android:layout_above="@id/linearLayout" 
android:layout_centerHorizontal="true" 

確保ImageView高於LinearLayout並以水平居中。

android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:scaleType="fitCenter" 

確保縮放圖像以填充LinearLayout上方的空間而不更改寬高比。

使用android:src代替ImageView的android:background。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="25dp" 
    android:paddingRight="25dp"> 

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

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="fitCenter" 
     android:layout_above="@id/linearLayout" 
     android:layout_centerHorizontal="true" 
     android:src="@mipmap/ic_launcher" /> 

</RelativeLayout> 

enter image description here

+0

有沒有理由把'LinearLayout'放在'ImageView'上面? – user5360382

+0

在較舊的Android版本中,視圖需要在可以引用之前進行聲明。我不知道什麼時候改變了。我想老習慣不會輕易死去;-) –

0

試試下面的代碼。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:paddingLeft="25dp" 
       android:paddingRight="25dp"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/center_layout" 
     android:adjustViewBounds="true" 
     android:scaleType="centerInside" 
     android:src="@mipmap/ic_launcher"/> 

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

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="asdasdasdas" 
      android:textSize="50dp"/> 

    </LinearLayout> 

</RelativeLayout> 
+0

這似乎幾乎是正確的,但是'ImageView'被拉伸到全寬。 – user5360382

0

你可以試試這個

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingTop="25dp" 
    android:paddingBottom="25dp" 
    android:paddingLeft="25dp" 
    android:paddingRight="25dp"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="25dp" 
     android:layout_marginBottom="25dp" 
     android:background="@mipmap/ic_launcher" 
     android:layout_centerHorizontal="true" 
     android:scaleType="center"/> 


    <LinearLayout 
     android:id="@+id/center_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/imageView" 
     android:background="@android:color/holo_blue_bright" 
     android:orientation="vertical"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center" 
       android:text="TextView inside Linear Layout" 
       android:textSize="20sp"/> 

    </LinearLayout> 

</RelativeLayout> 

這是結果

enter image description here