2011-02-23 72 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