我想我在这里缺少一些基本的东西。看看有没有人可以帮忙。
我有一个活动(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() 中,我还使用下面的代码来更改相对布局“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() 时),重量的变化似乎不会生效。我可以看到变量 yourRL 等正在被填充。我改变我的Relativelayout(它包含titleStory TextView)的重量的基本原因是因为当对齐方式改变时我希望我的titleStory textview 的高度改变(增加/减少)以便更好地查看。使用我在上面的 onConfigurationChanged() 中输入的代码,我期望权重会改变(从 0.05 到 0.01),因此 textview 的高度也应该改变。