3

我想我在这里缺少一些基本的东西。看看有没有人可以帮忙。

我有一个活动(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 的高度也应该改变。

4

2 回答 2

2

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

LinearLayout yourRL = (LinearLayout)findViewById(R.id.footerStoryLinearLayout);
    yourRL.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 0.5f));
于 2013-01-31T13:32:09.580 回答
0

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

不过,如果你想使用权重,你必须在具有 fill_parrent 高度和宽度的 RelativeLayout 中使用 LinearLayout。

我想你得到了我..

于 2013-01-31T10:48:05.507 回答