onConfigurationChanged

onConfigurationChanged

我想我错过了一些基本的东西。看看你们能不能帮忙。
我有一个活动(activity_story1),在这里我加载一些文本和一些其他控件。我布置所有成分的方法是,把它们放在线性排列中的相对排列组中,然后给这些相对排列分配权重。下面的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()时),权重的更改似乎不会生效。我可以看到你等的变量正在被填充。
更改相对布局(包含TitleStory文本视图)的权重的基本原因是,当对齐方式更改时,我希望TitleStory文本视图的高度更改(增加/减少)以获得更好的查看效果。在上面onconfigurationchanged()中输入的代码中,我希望权重会改变(从0.05变为0.01),因此textview的高度也应该改变。

最佳答案

更新我的XML以使用LinearLayout(问题用新XML更新),然后使用下面的代码更新权重。我想我定义了太多的布局,这让我很复杂。

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

关于android - 重量变化在布局中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14623643/

10-10 03:57