我在FrameLayout中有两个RelativeLayouts。我们的想法是,它们将占据屏幕的左右边缘,第一个视图(在本例中为文本视图)占据屏幕的中间部分。
在每个RelativeLayout中,将有一个复合按钮的垂直列表。每个按钮旁边都有一个片段,单击时会滑动打开。因此,单击屏幕左侧的按钮会导致选项列表滑动到按钮右侧。单击屏幕右侧的按钮会导致选项列表滑动到按钮的左侧。
屏幕左侧的RelativeLayout工作正常。按下按钮会使片段显示在按钮的右侧。但我不能让屏幕右侧的RelativeLayout表现正常。单击其中一个按钮时,其下方的所有按钮都向左滑动。我似乎无法将按钮固定到右边缘,因此碎片始终显示在按钮的左侧,并且屏幕右边缘有任何剩余的按钮。
我做错了什么?有更好的方法吗?
片段附加到Activity onCreate()中的按钮。
这是没有点击任何按钮时的样子
单击左侧的按钮可正确加载片段。一切都停留在左边缘。
单击右侧的按钮是问题所在。按钮不会保持固定在右边缘,而是向左浮动。 GGG的行为有所不同,因为(我认为)片段尚未附加到onClick侦听器。
<FrameLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAlignment="center"
android:text="@string/hello_world"
android:layout_gravity="center_vertical|center_horizontal"
android:background="#000000"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#33ffffff">
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_aaa_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/sb_aaa_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/sb_aaa_selection"/>
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_bbb_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_aaa_selection" />
<FrameLayout
android:id="@+id/sb_bbb_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/sb_bbb_selection"
android:layout_below="@+id/sb_aaa_selection" />
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_ccc_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_bbb_selection" />
<FrameLayout
android:id="@+id/sb_ccc_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/sb_ccc_selection"
android:layout_below="@+id/sb_bbb_selection"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#33ffffff"
android:layout_gravity="top|right">
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_ddd_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/sb_ddd_frag_container" />
<FrameLayout
android:id="@+id/sb_ddd_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_eee_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_ddd_selection"
android:layout_toRightOf="@+id/sb_eee_frag_container" />
<FrameLayout
android:id="@+id/sb_eee_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_ddd_selection" />
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_fff_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_eee_selection"
android:layout_toRightOf="@+id/sb_ddd_frag_container" />
<FrameLayout
android:id="@+id/sb_fff_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_eee_selection" />
</RelativeLayout>
</FrameLayout>
答案 0 :(得分:0)
看起来我不会得到回复所以我会分享我想出的解决方案......
我不满意手动定位每个元素但是(到目前为止)我无法通过在布局中包装按钮和片段来使所有内容正确对齐。
<FrameLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:background="#000000"
android:text="@string/hello_world"
android:textAlignment="center" />
<!-- Left side button bar -->
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#33ffffff" />
<!-- AAA Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_aaa_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/sb_aaa_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp" />
<!-- BBB Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_bbb_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="45dp" />
<FrameLayout
android:id="@+id/sb_bbb_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp"
android:layout_marginTop="45dp" />
<!-- CCC Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_ccc_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="90dp" />
<FrameLayout
android:id="@+id/sb_ccc_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp"
android:layout_marginTop="90dp" />
<!-- DDD Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_ddd_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="135dp" />
<FrameLayout
android:id="@+id/sb_ddd_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp"
android:layout_marginTop="135dp" />
<!-- EEE Position Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_eee_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="180dp" />
<FrameLayout
android:id="@+id/sb_eee_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="45dp"
android:layout_marginTop="180dp" />
<!-- Right Side Button Bar -->
<!-- Right Side Background -->
<RelativeLayout
android:layout_width="45dp"
android:layout_height="match_parent"
android:layout_gravity="top|right"
android:background="#33ffffff" />
<!-- FFF Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_fff_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right" />
<FrameLayout
android:id="@+id/sb_fff_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="45dp" />
<!-- GGG Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_ggg_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="45dp" />
<FrameLayout
android:id="@+id/sb_ggg_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="45dp"
android:layout_marginTop="45dp" />
<!-- HHH Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_hhh_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="90dp" />
<FrameLayout
android:id="@+id/sb_hhh_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="45dp"
android:layout_marginTop="45dp" />
<!-- III Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_iii_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="135dp"
android:layout_toRightOf="@+id/sb_player_frag_container" />
<FrameLayout
android:id="@+id/sb_iii_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="45dp"
android:layout_marginTop="90dp" />
<!-- JJJ Selection -->
<com.example.fragmentbuttonstest.widget.SelectionButton
android:id="@+id/sb_jjj_selection"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="180dp" />
<FrameLayout
android:id="@+id/sb_jjj_frag_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="45dp"
android:layout_marginTop="135dp" />
</FrameLayout>