2016-12-02 56 views
1

我正在使用百分比相對佈局來定義卡片視圖的佈局。當定義寬度和水平邊距屬性時,它工作正常。但是,以百分比來定義高度和邊距頂部/底部對佈局沒有影響。這裏是我的卡布局的xml:PercentRelativeLayout沒有采用百分比高度和保證金頂部/底部相關屬性

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_margin="10dp" 
    app:cardBackgroundColor="@color/cardview_light_background" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/exam_card"> 
    <android.support.percent.PercentRelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:textStyle="bold" 
      android:textColor="@color/colorPrimaryDark" 
      app:layout_widthPercent="60%" 
      android:layout_height="wrap_content" 
      android:textSize="30sp" 
      android:id="@+id/exam_name"/> 
     <TextView 
      app:layout_marginLeftPercent="58.5%" 
      app:layout_marginStartPercent="58.5%" 
      android:textColor="@color/colorPrimary" 
      android:textStyle="bold" 
      app:layout_widthPercent="20%" 
      android:id="@+id/from_test_date" 
      android:layout_height="wrap_content" 
      android:textSize="28sp" 
      /> 
     <TextView 
      app:layout_widthPercent="20%" 
      app:layout_marginLeftPercent="56%" 
      app:layout_marginStartPercent="56%" 
      android:textColor="@color/colorPrimary" 
      android:textStyle="bold" 
      android:layout_below="@+id/from_test_date" 
      android:id="@+id/from_time_year" 
      android:layout_height="wrap_content" 
      android:textSize="13sp" 
      /> 
     <View 
      app:layout_marginLeftPercent="73%" 
      app:layout_marginRightPercent="24%" 
      android:id="@+id/divider" 
      android:layout_width="match_parent" 
      android:layout_height="4dp" 
      android:background="@color/colorPrimaryDark"/> 
     <TextView 
      app:layout_marginLeftPercent="79.5%" 
      app:layout_marginStartPercent="79.5%" 
      android:textColor="@color/colorPrimary" 
      android:textStyle="bold" 
      app:layout_widthPercent="20%" 
      android:id="@+id/to_test_date" 
      android:layout_height="wrap_content" 
      android:textSize="28sp" 
      /> 
     <TextView 
      app:layout_marginLeftPercent="77%" 
      app:layout_marginStartPercent="77%" 
      android:textColor="@color/colorPrimary" 
      android:textStyle="bold" 
      android:layout_below="@+id/to_test_date" 
      app:layout_widthPercent="20%" 
      android:id="@+id/to_time_year" 
      android:layout_height="wrap_content" 
      android:textSize="13sp" 
      /> 
    </android.support.percent.PercentRelativeLayout> 

</android.support.v7.widget.CardView> 
+0

http://www.pushinteractions.com/2015/11/percentage-based-margin-size-android-app-development/ –

+0

已經通過此鏈接了。問題是應用程序:layout_marginBottomPercent =「10%」,即使我在任何地方設置了高度在dp的高度,該特定的textview甚至無法看到。我甚至將整個項目升級到sdk-version 25以使用父庫25.0.1,但這並沒有解決問題。 –

回答

0

所以我不認爲有任何解釋爲什麼會發生這種情況。但是我發現了一個可以幫助有類似問題的人的工作。

因此百分比相對佈局適用於widthPercentage。但是,您無法將它與邊距開始/剩餘百分比或邊距結束/右邊百分比一起結合,兩者(或全部4個)都可以很好地一起工作。

所以對於你必須定義在類似意義上的高度/保證金以及佈局,您可以創建一個PercentRelativeLayout內垂直方向的線佈局,指定它的widthPercent/marginPercent,設置高度0dp和使用權重屬性用於線性佈局內的元素。

我主要是在卡片視圖中使用它,並且不管屏幕大小或方向如何,元素都只佔用屏幕的某個部分。

+0

爲了說明這一點,有一個很好的原因,PercentRelativeLayouts在運行時得到它們的維度,所以當你第一次加載一個佈局時,PercentRelativeLayout的高度爲0,再加上高度爲match_parent,你的高度爲0 –

+0

通過這個邏輯,我不應該面對與寬度方面相同的問題嗎? –

+1

不,當你使用'android:layout_height =「wrap_content」'這意味着尺寸是在運行時計算的,而'android:layout_width ='match_parent''實際上在佈局第一次加載時有一個高度,因爲percentRelativeLayouts父具有匹配父寬度,它只是匹配該寬度,並且percentRelativeLayout中的所有內容都基於寬度與該寬度的百分比。 –

相關問題