以编程方式设置ViewFlipper权重

时间:2011-02-23 15:31:08

标签: android viewflipper android-layout-weight

我想以编程方式更改ViewFlipper的权重。 我有一个TableRow,其中我有2列。当第二列包含ViewFlipper时,第一列包含RelativeLayout元素。 我的ViewFlipper包含2个视图。不知何故,在我的Java代码中,当我点击按钮时,我更改了ViewFlipper的可见视图。我想要做的是,当我更改ViewFlipper视图(通过调用showNext())时,能够更改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 个答案:

答案 0 :(得分:1)

我的猜测:你应该使用TableRow.LayoutParams,而不是LinearLayout.LayoutParams。但这只是猜测而没有看到实际的错误;任何时候你问一个关于崩溃的问题你应该真的包含你的错误追溯的日志。