2011-06-19 63 views
1

在下面的屏幕截圖中,該複選框不在中心位於edittext上方。如何將複選框居中放置,使其居中在edittext下方?  
 
enter image description here如何在不使用嵌套佈局的情況下將CheckBox放置在EditText下方?

佈局我使用產生上述UI是:

佈局XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 

    android:padding="5dip" 
    android:gravity="center" 

    android:text="text 1"/> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:layout_toRightOf="@+id/textView1" 
    android:layout_alignTop="@+id/textView1" 
    android:layout_alignBottom="@+id/textView1" 

    android:padding="5dip" 

    android:gravity="center" 
    android:inputType="number" 
    android:text="1"/> 

<CheckBox 
    android:id="@+id/checkBox" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_below="@+id/editText1" 
    android:layout_toRightOf="@+id/textView1" 

    android:text="check"/> 
</RelativeLayout> 

的事情,我已經嘗試了具有CheckBox控件沒有成功:

  1. android_layoutAlignRight與EditText小部件。

  2. `安卓layout_gravity上相對佈局=「CENTER_HORIZONTAL」

我知道我可以在另一個相對佈局嵌套的複選框,並在內部相對佈局使用android:layout_gravity="center"實現「定心」,但我更喜歡避免嵌套佈局的解決方案。

有什麼建議嗎?謝謝。

+0

「我更喜歡避免嵌套佈局的解決方案。」爲什麼你想避免嵌套佈局? – Squonk

+0

@MisterSquonk因爲,如果有一種非嵌套的方式來實現相同的外觀,引入一個嵌套的佈局來簡單地將一個小部件居中放在一起看起來效率不高。 – Mandel

回答

1

我不認爲這是可能的,除非你想添加填充到左邊的複選框,所以它移動到edittext的中心。你可以做到,但這不可取。

0

我猜你想要框和文本居中?如果您將重力設置爲複選框居中並使用填充父寬度,那麼您可以將文本居中。但是它的中心仍然會從editText1中刪除,因爲Box本身會佔用整個寬度到中心。

如果您使用自定義的圖形切換按鈕代替,那麼你可以輕鬆地完成你想要使用0.9文件,可能會更好看整體圖形而言(同重:中心,寬度:從上面填寫家長)

否則我認爲你必須嵌套它。

+0

你能否澄清一個.9文件如何將複選框居中? – Mandel

+0

使用.9文件允許您創建支持文本的自定義切換/複選框。當你實現它時,你會偏向按鈕一側,(即在按鈕內有文本)。一旦你這樣做了,你可以在按鈕上使用: – Toclmi

+0

android:layout_width =「fill_parent」android:gravity =「center」,它將使文本居中並使用.9文件適當地拉伸。 – Toclmi

0

當你正在使用的RelativeLayout,嘗試

android:layout_centerHorizontal="true" 

好吧,那麼你可以使用TableLayout如下:

<?xml version="1.0" encoding="utf-8"?><TableLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout1" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:stretchColumns="1"> 

<TableRow> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:padding="5dip"   
    android:text="text 1"/> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"  
    android:padding="5dip"  
    android:gravity="center"     
    android:inputType="number" 
    android:text="1"/> 

    </TableRow> 

    <TableRow> 

    <View/> 

<CheckBox 
    android:id="@+id/checkBox" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_gravity="center_horizontal"     
    android:text="check"/> 

</TableRow></TableLayout> 

空節點是故意的黑客,強制檢查框變爲'列'1而不是列0。

這給出了以下:

enter image description here

+0

這似乎並不奏效。 – Mandel

+0

您還需要刪除layout_toRightOf屬性。這會將它居中在屏幕上,但不在編輯文本框的中心。 –

+0

嗯,我不想將它居中在屏幕上,而是將它與文本框相對中心。 – Mandel

0

我發現了一個非常簡單的解決方案,這一點,即使它需要使用RelativeLayout的

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <CheckBox 
     android:id="@+id/remember_settings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:textSize="12sp" 
     android:textColor="#666666" 
     android:text="@string/remember_settings"/> 

</RelativeLayout> 

在代碼如上所述,均爲layout_widthlayout_centerInParent in 複選框必須按照上面的示例進行設置:否則它將不起作用。

此外,如果RelativeView設置爲填滿整個屏幕,您可以設置RelativeView的layout_widthmatch_parent,否則必須設置爲FILL_PARENT

希望這有助於任何人在那裏,因爲我一直在與它自己掙扎。

相關問題