0

我有一个小的侧边栏片段,我在选择操作项时添加。它有一个固定的宽度,我希望主视图将全屏显示,直到操作项选择时,它会被略微压缩以允许侧边栏出现。

我已经尝试了很多东西,包括相对 toleftOf/RightOf 和各种布局/宽度组合。除非我使用带权重的 LinearLayout,否则我总是以侧边栏全屏结束。半工作 LinearLayout 权重的问题在于它使用了屏幕的百分比,这会导致对不同屏幕尺寸的不可靠影响。

有没有人做过类似的事情?

 ______    _
|      |  | |
| Main |<-|S|
|______|  |_|

目前半工作的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:baselineAligned="false" >

    <FrameLayout
        android:id="@+id/frameLayoutImage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
    </FrameLayout>

    <!-- This will initially have no content/collapsed -->
    <FrameLayout
        android:id="@+id/frameLayoutEdit"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="right|top"
        android:layout_marginBottom="40dp"
        android:layout_weight="4" >

    </FrameLayout>

</LinearLayout>

片段 xml(可以是固定宽度):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout />

    <Button />

    <Button />

</RelativeLayout>

片段添加:

// This should just push the frame layout the necessary width to display the fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.frameLayoutEdit, xmpFrag);
4

2 回答 2

1

不要在侧边栏上设置权重;设置固定大小(或 wrap_content)并将主要内容的 layout_width 设置为 0dp。

根据您想要的效果,您可能希望将它们都放在 FrameLayout 中,以便侧边栏覆盖主片段而不是缩小主片段,使主片段始终填充并且侧边栏只是它自己的大小。

于 2013-03-19T03:45:11.913 回答
0

这是上述答案的实际工作代码(感谢斯科特帮助我实现了逻辑飞跃):

<FrameLayout
    android:id="@+id/frameLayoutImage"
    android:layout_width="match_parent"
    android:layout_height="fill_parent" 
    android:layout_weight="1">
</FrameLayout>

<!-- This will initially have no content/collapsed -->
<FrameLayout
    android:id="@+id/frameLayoutEdit"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="right|top"
    android:layout_marginBottom="40dp" >

</FrameLayout>

分段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout />

    <Button />

    <Button />

</RelativeLayout>
于 2013-03-19T04:34:11.233 回答