2011-02-23 74 views
0

我想以編程方式更改ViewFlipper的體重。 我有一個TableRow,我有2列。當第二列包含ViewFlipper時,第一列包含一個RelativeLayout元素。 我的ViewFlipper包含2個視圖。不知何故,在我的Java代碼中,當我點擊一個按鈕時,我改變了ViewFlipper的可見視圖。我想要做的是,當我更改ViewFlipper視圖(通過調用showNext())時,可以更改ViewFlipper權重,使其在屏幕中更大。以編程方式設置ViewFlipper體重

換句話說,我行的第一列的權重= 1,第二個(ViewFlipper)的權重= 0.8。當我點擊一個按鈕時,我想以編程方式更改這些權重。 這可能嗎?怎麼樣 ?以下是我的XML代碼。

我在網上搜索,我發現這個解決方案:

myFlipper.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.3f)); 

這是不行的,它崩潰,這一點,我認爲正常的,因爲ViewFlipper不是LinearLayout中。

這裏是我的XML代碼:

<TableRow 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:background="#00000000" > 
    <RelativeLayout 
     android:id="@+id/rltest" 
     android:layout_width="0dip" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_centerInParent="true" 
     android:paddingLeft="6px" 
     android:paddingRight="6px" 
     android:background="#00000000" > 
     <TextView 
      android:id="@+id/tvtest" 
      android:layout_width="match_parent" 
      android:layout_height="60px" 
      android:layout_alignParentLeft="true" 
      android:textColor="#FFFFFF" 
      android:textSize="22px" 
      android:singleLine="true" 
      android:background="#00000000" 
      android:gravity="center_vertical" /> 
    </RelativeLayout> 
    <ViewFlipper 
     android:id="@+id/flipper" 
     android:layout_width="0dip" 
     android:layout_height="match_parent" 
     android:layout_weight="0.8" 
     android:background="#00000000" > 
     <TextView 
      android:id="@+id/tvName" 
      android:layout_width="wrap_content" 
      android:layout_height="60px" /> 
     <LinearLayout 
      android:id="@+id/lltest" 
      android:layout_width="match_parent" 
      android:layout_height="60px" 
      android:layout_centerInParent="true" 
      android:background="#00000000" 
      android:gravity="center" /> 
    </ViewFlipper> 
</TableRow> 

你有什麼想法?

感謝

回答

1

我的猜測:你應該使用TableRow.LayoutParams,不LinearLayout.LayoutParams。但這只是一個猜測而沒有看到實際的錯誤;任何時候,當你問一個關於崩潰的問題時,你應該真的把錯誤記錄在日誌中。

+0

你是對的,它與TableRow.LayoutParams一起工作,非常感謝。我很抱歉忘記了崩潰日誌,我不確定它可以幫助。謝謝Yoni。 – Vincent 2011-02-23 15:52:29