2014-05-22 91 views
0

我有繪製圖形的自定義視圖。我想要做的是將視圖初始顯示爲其大小的一半(狀態a),然後在按下按鈕之類的事件時,我希望視圖展開爲其大小的兩倍(狀態b)。我在這裏遇到了幾個問題:如何將較小的Android視圖置於另一視圖中?

1)第一個問題是將視圖置於狀態a,以便它的狀態相對於狀態b是水平和垂直居中的。 pw_future在屏幕的頂部和屏幕一樣寬。我如何讓pw_spinner集中在這個視圖上?

2)現在,我在XML文件中指定了pw_spinner的寬度/高度。我不喜歡這個,因爲屏幕尺寸可能因硬件而異。我真的希望它是pw_future的1/2。我怎樣才能做到這一點?

我正在使用RelativeLayout(並不確定它是最佳選項)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ProgressWheel="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000000" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:id="@+id/relativeLayout" > 

<com.todddavis.components.ProgressWheel 
    android:id="@+id/pw_future" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_alignParentTop="true" 
    ProgressWheel:barColor="#FCEC5A" 
    ProgressWheel:barLength="60dp" 
    ProgressWheel:barWidth="10dp" 
    ProgressWheel:delayMillis="75" 
    ProgressWheel:rimColor="#343434" 
    ProgressWheel:rimWidth="10dp" 
    ProgressWheel:spinSpeed="30dp" 
    ProgressWheel:text="state b" 
    ProgressWheel:textColor="#FCEC5A" 
    ProgressWheel:textSize="60sp" 
    /> 

<com.todddavis.components.ProgressWheel 
    android:id="@+id/pw_spinner" 
    android:layout_width="165dp" 
    android:layout_height="165dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    ProgressWheel:barColor="#FCEC5A" 
    ProgressWheel:barLength="60dp" 
    ProgressWheel:barWidth="5dp" 
    ProgressWheel:delayMillis="75" 
    ProgressWheel:rimColor="#343434" 
    ProgressWheel:rimWidth="5dp" 
    ProgressWheel:spinSpeed="30dp" 
    ProgressWheel:textColor="#FCEC5A" 
    ProgressWheel:textSize="60sp" /> 

回答

0

要對齊的意見,你只需要使用兩個完全相同的佈局參數。看起來你對pw_spinner使用android:layout_centerVertical="true",刪除它。另外,將android:layout_alignParentTop="true"添加到pw_spinner。

+0

是的,pw_spinner應該有android:layout_alignParentTop =「true」,而不是android:layout_centerVertical =「true」。這個問題是pw_spinner小於pw_future,因此不是垂直居中在pw_future上。 – user1529455

+0

啊,我明白你的意思了,所以它不應該與父母的頂端對齊。在這種情況下,我會建議把兩個視圖放在它們自己的RelativeLayout中(我不能說這是你做了什麼,佈局是不完整的)。完成之後,然後在兩個視圖上設置centerHorizo​​ntal和centerVertical將會起作用。 – ashishduh

相關問題