2011-03-29 61 views
22

我有一個用TextViews動態填充的Horizo​​ntalScrollView。有時候會有一個,兩個,三個或更多的元素。我正在尋找的是一種讓項目居中的方法,無論元素的數量如何。具有居中元素的Horizo​​ntalScrollView

例如,用一個元件:

| --------- MenuA --------- | 

隨着兩個元素:

| ---- MenuA --- MenuB ---- | 

具有三個元素:

| - MenuA - MenuB - MenuC - | 

隨着五行(MenuD和MenuE被隱藏) :

| MenuA - MenuB - MenuC - Me| 

更新:這是一個帶有兩個菜單的簡單佈局。我如何集中MenuA和MenuB?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <HorizontalScrollView android:id="@+id/horizontalScrollView1" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"> 
     <LinearLayout android:id="@+id/linearLayout1" 
      android:layout_width="fill_parent" android:layout_height="fill_parent" 
      android:orientation="horizontal"> 
      <TextView android:text="MenuA" android:id="@+id/textView1" 
       android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
      <TextView android:text="MenuB" android:id="@+id/textView2" 
       android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
     </LinearLayout> 
    </HorizontalScrollView> 
</LinearLayout> 
+0

所以你的'ScollView'是水平的(比屏幕寬),這些項目是以屏幕爲中心的? – Phonon 2011-03-29 20:30:09

+0

是的,我的Horizo​​ntalScrollView是水平的,並且項目應該水平居中 – 2011-03-29 20:36:38

回答

29

使用重力屬性:

機器人:layout_gravity = 「CENTER_HORIZONTAL」 編輯:03.30:

我找到了!只需將重力設置爲LinearLayout的上方:您只需添加一點填充/邊距即可使文本瀏覽更加舒適!

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" > 

    <HorizontalScrollView 
     android:id="@+id/horizontalScrollView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" > 

     <LinearLayout 
      android:id="@+id/linearLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/TextView04" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="MenuB" > 
      </TextView> 

      <TextView 
       android:id="@+id/TextView03" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="MenuB" > 
      </TextView> 

      <TextView 
       android:id="@+id/TextView02" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="MenuB" > 
      </TextView> 

      <TextView 
       android:id="@+id/TextView01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="MenuB" > 
      </TextView> 

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

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="MenuB" > 
      </TextView> 
     </LinearLayout> 
    </HorizontalScrollView> 

</LinearLayout> 

讓我發佈!

+2

我試過設置android:layout_gravity =「center_horizo​​ntal」,並且TextViews仍然位於右邊 – 2011-03-29 20:38:26

+1

可以請您發送完整的佈局嗎? – olamotte 2011-03-29 20:42:24

+0

它實際上應該只是'android:gravity =「center_horizo​​ntal」',因爲'layout_gravity'只會將Horizo​​ntalScrollView放置在父級的水平中心,但是非正式的,我不太確定即使這樣做會像預期的那樣工作 – kcoppock 2011-03-29 21:33:03

相關問題