重量变化不会在布局中生效

时间:2013-01-31 10:32:28

标签: android layout textview

我想我错过了一些基本的东西。看看你们中是否有人可以提供帮助。

我有一个活动(activity_story1),我正在加载一些文本和一些其他控件。我布置所有组件的方法是将它们放在LinearLayout中的RelativeLayout组中,然后我为这些RelativeLayouts分配权重。以下示例xml以供参考。

<LinearLayout 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"
tools:context=".Story1Activity" 
android:id="@+id/StoryLinearLayout">

<TextView
        android:id="@+id/titleStory"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="0.05"/>

<TextView
        android:id="@+id/textViewStory1"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="0.90"/>

<LinearLayout
        android:id="@+id/footerStoryLinearLayout"
        android:layout_weight="0.05"
        android:layout_width="fill_parent"
        android:layout_height="0dip">
        <RelativeLayout
            android:id="@+id/footerStoryRelativeLayout"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView
                android:id="@+id/PageCount"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:text="page count"/>
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_alignParentTop="true"
                android:onClick="addBookmark"
                android:clickable="true"/>

        </RelativeLayout>

</LinearLayout>

我正在onCreate上面的textviews中加载一些文本。到目前为止一切都很好。

现在我重复onConfigurationChanged(),以便当用户更改屏幕对齐时,我的内容保持不变,并且不会调用onCreate()来重新加载textviews中的内容。在onConfigurationChanged()中,我也使用下面的代码来改变relativelayout“titleStoryRelativeLayout”的权重。

//change the weight of the textview when screen alignment changes
    LayoutInflater inflater = LayoutInflater.from(this);
    LinearLayout ll = (LinearLayout)inflater.inflate(R.layout.activity_story1, null);
   LinearLayout yourRL = (LinearLayout)ll.findViewById(R.id.footerStoryLinearLayout);
   yourRL.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.1f));

然而,一旦我重新调整我的屏幕(当调用onConfigurationChanged()时),重量的变化似乎没有生效。我可以看到你的RL等填充变量。 我改变Relativelayout(其中包含titleStory TextView)权重的基本原因是,当对齐更改时,我希望我的titleStory textview的高度更改(增加/减少)以便更好地查看。使用上面的onConfigurationChanged()代码,我期望权重被改变(从0.05到0.01),因此textview的高度也应该改变。

2 个答案:

答案 0 :(得分:2)

更新了我的xml以使用LinearLayout(使用新的xml更新了问题),然后使用下面的代码更新了权重。我想通过定义太多布局使我感到复杂。

LinearLayout yourRL = (LinearLayout)findViewById(R.id.footerStoryLinearLayout);
    yourRL.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.5f));

答案 1 :(得分:0)

由于此xml文件未给出错误,因此并不意味着您可以将这些属性(weightorientation和您的情况weight与LinearLayout相关联)与RelativeLayout一起使用。请先查看RelativeLayout的文档。因为你不会在LinearLayout中找到android:layout_weight属性,你可以在android的文档中找到该属性。

如果你想使用重量,你必须使用RelativeLayout中的LinearLayout和fill_parrent的高度和宽度。

我猜你有我......