2012-02-29 64 views
0

我遇到了水平線性佈局問題,其中有一系列像瓷磚的圖像。我有時顯示3個瓷磚,有時候是5個。我編程設置2個瓷磚當我只需要顯示3時就「消失」了。我需要以中心顯示它們,但是僅當我顯示3個瓷磚時。什麼我的佈局是這樣的:如何以編程方式更改LinearLayout的重力?

<HorizontalScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scrollbars="none"> 
    <!-- container --> 
    <LinearLayout 
     android:id="@+id/tile_container" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center"> 

     <!-- tile1 --> 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content">   
      <ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@null" 
       android:src="@drawable/img_panel"/>     
     </FrameLayout> 

     <!-- tile2 --> 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 
     <ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@null" 
       android:src="@drawable/img_panel"/> 
     </FrameLayout> 

        <!-- tile3 --> 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content">   
      <ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@null" 
       android:src="@drawable/img_panel"/>     
     </FrameLayout> 

     <!-- tile4 --> 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 
     <ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@null" 
       android:src="@drawable/img_panel"/> 
     </FrameLayout>  

        <!-- tile5 --> 
     <FrameLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content">   
      <ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@null" 
       android:src="@drawable/img_panel"/>     
     </FrameLayout> 
         </LinearLayout> 
         </HorizontalScrollView> 

我試圖通過在代碼中這樣做是爲了修復它,但我得到一個ClassCastException似乎是因爲它是由一個Horizo​​ntalScrollView包裹。有人有主意嗎?

ViewGroup tileContainer = (ViewGroup)this.findViewById(R.id.tile_container); 
ViewGroup.LayoutParams lp = new  LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,Gravity.CENTER); 
tileContainer.setLayoutParams(lp); 

回答

0

替換:

ViewGroup tileContainer = (ViewGroup)this.findViewById(R.id.tile_container); 

有:

LinearLayout tileContainer = (LinearLayout) this.findViewById(R.id.tile_container); 
+1

我仍然得到一個ClassCastException ... 02-29 14:08:34.238:E/AndroidRuntime(9602):致命異常:main 02-29 14:08:34.238:E/AndroidRuntime(9602):java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams 02-29 14:08:34.238:E/AndroidRuntime(9602):\t在android.wi dget.FrameLayout.onLayout(FrameLayout.java:293) 02-29 14:08:34.238:E/AndroidRuntime(9602):\t at android.widget.Horizo​​ntalScrollView.onLayout(Horizo​​ntalScrollView.java:1297) – 2012-02-29 19:12:11

+0

project> clean on eclipse IDE應該可以解決這個問題 – Royi 2012-02-29 19:20:58

+0

不,當它碰到Horizo​​ntalScrollView的onLayout()方法時仍然會發生異常。 – 2012-02-29 19:56:10

相關問題