2010-11-18 22 views
1

いくつかのコントロール(layout_alignParentTop = true)を含むTableLayout、一番下のLinearLayout(layout_alignParentBottom = true)の3つの要素を含むRelativeLayoutがあります。それらの間に広がるListView(2つの要素のlayout_belowとlayout_aboveを使用)これはうまくいきますが、特定の状況下では、LinearLayoutの下端を消す必要があります。 setVisibilityを使用してView.GONEに設定するか、setLayoutParams()を使用して高さを0に設定すると、ListViewは新しく解放された領域を占有するように慎重にサイズ変更を拒否します。基本的には階層内のすべてに対してrequestLayout()を呼び出そうとしましたが、何も動作していないようです。階層ビューアを起動すると、ビューがなくなった/ layout_heightが0であることがわかりますが、それでも動作しません。Android:設定高さを0に設定

皮肉なことに、階層ビューアが完了すると、レイアウト自体が修正されます。私はユーザーが階層ビューアを実行することはおそらく受け入れられないと考えています。

EDIT:実際には、中央のレイアウトは、ListViewを含むRelativeLayoutです。これは問題になるかもしれませんが、私は試して除外します。私は私が見ているもののアイデアを与える私のXMLの簡略化されたバージョンを投稿しました。

<RelativeLayout 
    android:id="@+id/main_container" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/top_table" 
     android:layout_alignParentTop="true" 
     android:stretchColumns="2" 
     android:shrinkColumns="1"> 
     <!-- removed for simplicity --> 
    </TableLayout> 
    <RelativeLayout 
     android:id="@+id/main_content" 
     android:descendantFocusability="afterDescendants" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/title_table" 
     android:layout_above="@id/ad_toolbar"> 
     <!-- removed for simplicity --> 
     <ListView 
      android:id="@+id/android:list" 
      android:layout_alignParentTop="true" 
      android:descendantFocusability="afterDescendants" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
    </RelativeLayout> 

    <LinearLayout 
     android:id="@+id/bottom_layout" 
     android:orientation="vertical" 
     android:layout_alignParentBottom="true" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent"> 
     <!-- removed for simplicity --> 
    </LinearLayout> 
</RelativeLayout> 
+0

レイアウトの.xmlを投稿できますか? –

+0

実際のXMLは、レイアウトがさまざまなアクティビティで使用されるいくつかのレイアウトファイルで構成されているのでかなり複雑ですが、上記の単純化バージョンを投稿しました。そして、私は、真ん中の領域が、実際には、違いを生むかもしれないListViewを含むRelativeLayoutであることに気付きました。私はそれを試みて排除するつもりです。 – jjb

答えて

1

親にRelativeLayoutを使用する特別な理由はありますか?これは、ListViewがlayout_height = "0dip"およびlayout_weight = "1"を持つ、TableLayout、ListView、およびLinearLayoutを含む垂直LinearLayoutを使用する必要があります。一番下のLinearLayoutに可視性を設定すると、ListViewのレイアウトの重みによって、その領域がいっぱいになります。

+0

layout_weightは適切なソリューションです。彼はまだそれを考えなかったのだろうか、それとも私たちが思っているよりも複雑な問題か?私はそれを疑う。その理由はxmlが役に立ちます。 D –

+0

これは、上位要素と下位要素を含むレイアウトファイルが複数のアクティビティで使用され、サブ要素を適切に配置するためのRelativeLayoutという事実を使用するため、RelativeLayoutです。すべてのレイアウトがLinearLayoutとして簡単に動作するわけではありません。 – jjb

関連する問題