我想我错过了一些基本的东西。看看你们能不能帮忙。
我有一个活动(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/