用2个面板改变framelayout中的重量

时间:2014-04-03 10:00:55

标签: android android-layout android-fragments

我需要为以编程方式包含片段的framelayout设置weigth。这可能吗?

我有一个xml布局膨胀的片段:

<LinearLayout
    android:background="@drawable/fondodroid2"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".TabOrderActivity$OrderWorkoutsFragment">    

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <FrameLayout
            android:layout_weight="0"
            android:id="@+id/fragment_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="16dp">

        </FrameLayout>

        <FrameLayout
            android:layout_weight="1"
            android:id="@+id/fragment_detail"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="16dp" />
    </LinearLayout>


</LinearLayout>

然后,我在第一个framelayout中有一个片段实例化,现在,当我点击第一个片段中的listview项目时,我想将权重设置为1以使多个面板可见.. 这可能吗?

2 个答案:

答案 0 :(得分:0)

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) frameLayout.getLayoutParams();
layoutParams.weight = 10;

答案 1 :(得分:0)

在这种情况下,您必须将帧宽设置为0dp以应用布局权重,并在线性布局中设置权重总和:

示例:

<LinearLayout
android:background="@drawable/fondodroid2"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".TabOrderActivity$OrderWorkoutsFragment">    

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="2">

    <FrameLayout
        android:layout_weight="0"
        android:id="@+id/fragment_list"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp">

    </FrameLayout>

    <FrameLayout
        android:layout_weight="1"
        android:id="@+id/fragment_detail"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginRight="16dp" />
</LinearLayout>