3

ここで基本的な何かが欠けていると思います。あなたの誰かが助けることができるかどうか見てください。

テキストやその他のコントロールをロードしているアクティビティ(activity_story1)があります。すべてのコンポーネントをレイアウトする方法は、それらを LinearLayout 内の RelativeLayout のグループに配置し、それらの RelativeLayout に重みを割り当てたことです。以下のサンプル 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 の上記のテキストビューにテキストを読み込んでいます。ここまでは順調ですね。

ユーザーが画面の配置を変更してもコンテンツは同じままで、テキストビューのコンテンツをリロードするために onCreate() が呼び出されないように、onConfigurationChanged() をオーバーライドしています。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 に) 変更されることを期待していたため、テキストビューの高さも変更されているはずです。

4

2 に答える 2

2

LinearLayout(新しいxmlで更新された質問)を使用するように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 ファイルではエラーが発生しないため、これらの属性 ( weightorientationおよびこの場合weightは LinearLayout に関連付けられている) を RelativeLayout で使用できるという意味ではありません。最初にRelativeLayoutのドキュメントを参照してください。そのためandroid:layout_weightLinearLayoutのように Android のドキュメントでそのプロパティを見つけることができるプロパティは見つかりません。

それでも、重みを使用したい場合は、RelativeLayout で LinearLayout を fill_parrent の高さと幅で使用する必要があります。

私はあなたが私を手に入れたと思います..

于 2013-01-31T10:48:05.507 に答える