2015-10-17 99 views
-1

嗨,我正在製作我的第一個android程序「計算器」。我使用的是相對佈局,而不是線性佈局,在模擬器中運行時發現了一些問題。與「相對佈局」相關的佈局問題

1)框架沒有居中在屏幕上。 2)一旦處於橫向模式,數字再次進入左側而不是居中。

我嘗試了很多方法,但問題仍然存在。

enter image description here enter image description here

 <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_centerInParent="true"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceLarge" 
       android:id="@+id/textView" 
       android:background="#fbf8c9" 
       android:editable="true" 
       android:layout_alignParentTop="true" 
       android:layout_alignRight="@+id/button13" 
       android:layout_alignEnd="@+id/button13" 
       android:layout_marginTop="63dp" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="1" 
       android:id="@+id/button" 
       android:layout_centerVertical="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="2" 
       android:id="@+id/button2" 
       android:layout_above="@+id/button5" 
       android:layout_toRightOf="@+id/button" 
       android:layout_toEndOf="@+id/button" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="3" 
       android:id="@+id/button3" 
       android:layout_alignBottom="@+id/button2" 
       android:layout_toRightOf="@+id/button2" 
       android:layout_toEndOf="@+id/button2" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="4" 
       android:id="@+id/button4" 
       android:layout_below="@+id/button" 
       android:layout_alignLeft="@+id/button" 
       android:layout_alignStart="@+id/button" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="5" 
       android:id="@+id/button5" 
       android:layout_above="@+id/button8" 
       android:layout_toLeftOf="@+id/button3" 
       android:layout_toStartOf="@+id/button3" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="6" 
       android:id="@+id/button6" 
       android:layout_below="@+id/button3" 
       android:layout_toRightOf="@+id/button2" 
       android:layout_toEndOf="@+id/button2" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="7" 
       android:id="@+id/button7" 
       android:layout_below="@+id/button4" 
       android:layout_alignLeft="@+id/button4" 
       android:layout_alignStart="@+id/button4" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="8" 
       android:id="@+id/button8" 
       android:layout_below="@+id/button4" 
       android:layout_toLeftOf="@+id/button6" 
       android:layout_toStartOf="@+id/button6" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="9" 
       android:id="@+id/button9" 
       android:layout_alignBottom="@+id/button8" 
       android:layout_toRightOf="@+id/button8" 
       android:layout_toEndOf="@+id/button8" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="0" 
       android:id="@+id/button10" 
       android:layout_alignTop="@+id/button12" 
       android:layout_toLeftOf="@+id/button12" 
       android:layout_toStartOf="@+id/button12" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="+" 
       android:id="@+id/button11" 
       android:layout_alignTop="@+id/button10" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="-" 
       android:id="@+id/button12" 
       android:layout_below="@+id/button8" 
       android:layout_alignRight="@+id/button9" 
       android:layout_alignEnd="@+id/button9" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="*" 
       android:id="@+id/button13" 
       android:layout_toRightOf="@+id/button3" 
       android:layout_alignTop="@+id/button3" 
       /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="/" 
       android:id="@+id/button14" 
       android:layout_below="@+id/button3" 
       android:layout_toRightOf="@+id/button6" 
       android:layout_alignTop="@+id/button6" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="10" 
       android:id="@+id/button15" 
       android:layout_toRightOf="@+id/button9" 
       android:layout_alignTop="@+id/button9" /> 

      <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="20" 
       android:id="@+id/button16" 
       android:layout_alignTop="@+id/button12" 
       android:layout_toRightOf="@+id/button12" 
       android:layout_toEndOf="@+id/button12" /> 

     </RelativeLayout> 
    </RelativeLayout> 

請好心的人幫我解決這個問題..

+3

使用'wrap_content',而不是'match_parent'爲你的內在RelativeLayout的寬度和高度。同時爲外層保留'match_parent'。所以它會和它的孩子的寬度和高度(加邊距)的總和一樣大,因此它可以集中在它的父親中。 –

+1

感謝它工作....應用重力作爲另一個答案工作....任何更好的? – user3789200

+0

爲什麼會倒下投票?我經過多次搜索後得到了答案?下次在投票和離開之前最好提及原因。 :D – user3789200

回答

1

嘗試以下。

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_centerInParent="true" 
    > 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/textView" 
     android:background="#fbf8c9" 
     android:editable="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignRight="@+id/button13" 
     android:layout_alignEnd="@+id/button13" 
     android:layout_marginTop="63dp" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="1" 
     android:id="@+id/button" 
     android:layout_centerVertical="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="2" 
     android:id="@+id/button2" 
     android:layout_above="@+id/button5" 
     android:layout_toRightOf="@+id/button" 
     android:layout_toEndOf="@+id/button" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="3" 
     android:id="@+id/button3" 
     android:layout_alignBottom="@+id/button2" 
     android:layout_toRightOf="@+id/button2" 
     android:layout_toEndOf="@+id/button2" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="4" 
     android:id="@+id/button4" 
     android:layout_below="@+id/button" 
     android:layout_alignLeft="@+id/button" 
     android:layout_alignStart="@+id/button" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="5" 
     android:id="@+id/button5" 
     android:layout_above="@+id/button8" 
     android:layout_toLeftOf="@+id/button3" 
     android:layout_toStartOf="@+id/button3" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="6" 
     android:id="@+id/button6" 
     android:layout_below="@+id/button3" 
     android:layout_toRightOf="@+id/button2" 
     android:layout_toEndOf="@+id/button2" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="7" 
     android:id="@+id/button7" 
     android:layout_below="@+id/button4" 
     android:layout_alignLeft="@+id/button4" 
     android:layout_alignStart="@+id/button4" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="8" 
     android:id="@+id/button8" 
     android:layout_below="@+id/button4" 
     android:layout_toLeftOf="@+id/button6" 
     android:layout_toStartOf="@+id/button6" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="9" 
     android:id="@+id/button9" 
     android:layout_alignBottom="@+id/button8" 
     android:layout_toRightOf="@+id/button8" 
     android:layout_toEndOf="@+id/button8" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="0" 
     android:id="@+id/button10" 
     android:layout_alignTop="@+id/button12" 
     android:layout_toLeftOf="@+id/button12" 
     android:layout_toStartOf="@+id/button12" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="+" 
     android:id="@+id/button11" 
     android:layout_alignTop="@+id/button10" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="-" 
     android:id="@+id/button12" 
     android:layout_below="@+id/button8" 
     android:layout_alignRight="@+id/button9" 
     android:layout_alignEnd="@+id/button9" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="*" 
     android:id="@+id/button13" 
     android:layout_toRightOf="@+id/button3" 
     android:layout_alignTop="@+id/button3" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="/" 
     android:id="@+id/button14" 
     android:layout_below="@+id/button3" 
     android:layout_toRightOf="@+id/button6" 
     android:layout_alignTop="@+id/button6" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="10" 
     android:id="@+id/button15" 
     android:layout_toRightOf="@+id/button9" 
     android:layout_alignTop="@+id/button9" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="20" 
     android:id="@+id/button16" 
     android:layout_alignTop="@+id/button12" 
     android:layout_toRightOf="@+id/button12" 
     android:layout_toEndOf="@+id/button12" /> 

</RelativeLayout> 

+0

正是我在評論中所說的。但沒有解釋爲什麼它起作用。 –

+0

Frank N Stein,你說的沒錯。但是當我打開時沒有答案。試圖糾正它。併發布它。沒有看到您的評論。 – WonderKid

1
Try this in your xml: 
android:layout_centerInParent="true" 
android:gravity="center" 
android:layout_gravity="center" 
0

這是常見問題的RelativeLayout,你必須使用的LinearLayout