我想我错过了一些基本的东西。看看你们中是否有人可以提供帮助。
我有一个活动(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的高度也应该改变。
答案 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文件未给出错误,因此并不意味着您可以将这些属性(weight
,orientation
和您的情况weight
与LinearLayout相关联)与RelativeLayout一起使用。请先查看RelativeLayout的文档。因为你不会在LinearLayout中找到android:layout_weight
属性,你可以在android的文档中找到该属性。
如果你想使用重量,你必须使用RelativeLayout中的LinearLayout和fill_parrent的高度和宽度。
我猜你有我......