2012-07-28 82 views
0

我的佈局如下。在一些mdpi屏幕上,內部的LinearLayout被截斷。我想要發生的是確保內部的LinearLayout始終顯示它的所有內容。我希望ImageView能夠儘可能小,以確保它下面的LinearLayout顯示它的所有內容。在大屏幕上,ImageView應該與其圖像一樣大(即wrap_content)。是否可以縮放ImageView,使其下面的LinearLayout始終完全可見?

我試圖給ImageView的0.1的layout_weightlayout_weight 0.9(並給予兩者0dp的layout_height的),但是然後在更大屏幕上的ImageView的結束是在佈局的頂部的LinearLayout。我希望根LinearLayout的內容居中。

所以,只有在需要的時候纔可以縮小ImageView,使得它下面的LinearLayout始終完全可見?我正試圖完成這項功能,爲不同的屏幕尺寸/分辨率創建多個佈局文件。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    style="@style/tab_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical" 
    tools:context=".messages.MessagesHomeFragment" 
    > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="40dp" 
     android:src="@drawable/elephant_large" /> 

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

     <Button 
      android:id="@+id/button_send_voice_message" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Send a Voice Message" /> 

     <Button 
      android:id="@+id/button_send_sms_message" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Send an SMS" /> 

     <Button 
      android:id="@+id/button_view_messages" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Manage Messages" /> 

     <Button 
      android:id="@+id/button_invite_sms_recipients" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Invite SMS Recipients" /> 
    </LinearLayout> 

</LinearLayout> 

回答

0

我能夠完成我試圖通過使用下面的佈局做。關鍵是將根LinearLayout的高度設置爲wrap_content並將ImageView的layout_weight設置爲1.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    style="@style/tab_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:orientation="vertical" 
    > 

    <ImageView 
     android:id="@+id/elephantImageView" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:scaleType="fitCenter" 
     android:layout_marginBottom="20dp" 
     android:src="@drawable/elephant_large" 
     /> 

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

     <Button 
      android:id="@+id/button_send_voice_message" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Send a Voice Message" /> 

     ... 
    </LinearLayout> 
</LinearLayout> 
0

我不知道這是可能的......如果有的話,我會嘗試像下面描述的佈局(我沒有嘗試,恐怕圖像將成長爲多,因爲它可以用的​​東西像那樣)。我只更改了ImageView的佈局屬性。如果仍然不起作用,那麼定義基於ImageView的自己的小部件應該不會太困難,因爲您只需要覆蓋onLayout方法以僅縮小measureSpec你得到的是小於圖像...

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    style="@style/tab_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:orientation="vertical" 
    tools:context=".messages.MessagesHomeFragment" 
    > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:scaleType="centerInside" 
     android:layout_marginBottom="40dp" 
     android:src="@drawable/elephant_large" /> 

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

     <Button 
      android:id="@+id/button_send_voice_message" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Send a Voice Message" /> 

     <Button 
      android:id="@+id/button_send_sms_message" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Send an SMS" /> 

     <Button 
      android:id="@+id/button_view_messages" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Manage Messages" /> 

     <Button 
      android:id="@+id/button_invite_sms_recipients" 
      android:layout_width="239dp" 
      android:layout_height="wrap_content" 
      android:text="Invite SMS Recipients" /> 
    </LinearLayout> 

</LinearLayout> 
相關問題