2014-11-06 76 views
1

如下圖所示,我希望每個button的文本都以中心爲中心,而不是在這個意義上說,文本應該從中心開始寫,但從文本的中心應該開始也是視圖的中心。如何使子視圖文本的中心位於其父視圖的中心?

我在xml文件中使用了gravity屬性,layout_centerInParent="true"也是如此,但正如您在下面看到的那樣,文本開始從視圖的中心寫入。

請讓我知道哪個屬性可以完成這項工作?

XML

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<EditText 
    android:id="@+id/et_IP" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="IP Address" /> 
<EditText 
    android:layout_below="@+id/et_IP" 
    android:id="@+id/et_port" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="1883" /> 
    <Button 
    android:layout_below="@+id/et_port" 
    android:id="@+id/bt_connect" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="Connect..."/> 
    <Button 
    android:layout_below="@+id/bt_connect" 
    android:id="@+id/bt_clear" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="Clear"/> 
    <TextView 
    android:layout_below="@+id/bt_clear" 
    android:gravity="center" 
    android:id="@+id/tv_response" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="NO_RESPONSE"/> 
    </RelativeLayout> 

產品圖 enter image description here

+0

我認爲你需要一個customview來做到這一點 – TheRedFox 2014-11-06 14:11:29

回答

0

我最近做了這樣的事情在頁面上居中,並在視圖按鈕。這是一個很有用的小例子。

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" > 
<LinearLayout> 
<!-- Add other controls that you dont want with buttons --></LinearLayout> 
<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:paddingBottom="10dip" 
     android:paddingLeft="10dip" 
     android:paddingRight="10dip" 
     android:paddingTop="10dip" 
     android:layout_marginBottom="15dip" 
     android:layout_gravity="bottom|center" 
     android:layout_below="@id/login_form" > 

     <Button 
      android:id="@+id/edit_button" 
      style="@style/Button.Green" 
      android:layout_width="133dp" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="10dip" 
      android:layout_marginTop="10dip" 
      android:text="@string/OK" /> 

     <Button 
      android:id="@+id/unlock_button" 
      style="@style/Button.Green" 
      android:layout_width="136dp" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="10dip" 
      android:layout_marginTop="10dip" 
      android:text="@string/unlock" /> 

      <Button 
      android:id="@+id/reset_password_button" 
      style="@style/Button.Green" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dip" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="10dip" 
      android:text="@string/force_reset_password" /> 
    </LinearLayout> 
</merge> 

如果您在層次結構中工作,合併是實現視圖/佈局的好工具。希望它有幫助:)

+0

嗨,我試圖沒有指定任何邊距,它沒有工作?合併的用途是什麼? – user2121 2014-11-06 15:18:30

+0

標記有助於在將一個佈局包含在另一個佈局中時消除視圖層次結構中的冗餘視圖組。例如,如果您的主佈局是一個垂直LinearLayout,其中兩個連續視圖可以在多個佈局中重新使用,那麼放置兩個視圖的可重用佈局需要它自己的根視圖。但是,使用另一個LinearLayout作爲可重用佈局的根將導致垂直LinearLayout內的垂直LinearLayout。除了減慢UI性能之外,嵌套的LinearLayout沒有真正的用途。 – Chetandalal 2014-11-06 15:35:58

相關問題