近期在项目中遇到了一个小问题,这个问题之前一直都没有注意到,现在分享出来,大神看不见。
Linearlayout相较于RelativeLayout来说,实现起来思路更简单一点,要么是一个从上往下的结构,要么是从左往右的结构,直来直去的,不会有RelativeLayout那么多控件之间的关联。
但他的缺点也是显而易见的,就是有时候布局的层次会比RelativeLayout更深一些,而且代码量也会随之多一点。
废话不多说,接下来说我遇到的问题。
这是我遇到问题的布局
<RelativeLayout 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:background="#FFFFFF"
>
<FrameLayout
android:id="@+id/fl_main_tab_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/line_main_tab"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
</FrameLayout>
<View
android:id="@+id/line_main_tab"
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_above="@+id/rg_main_tab"
android:background="@android:color/darker_gray" />
<RadioGroup
android:id="@+id/rg_main_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="bottom"
android:background="#28529C"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/rb_main_tab_1"
style="@style/MainTabBottom"
android:checked="true"
android:drawableTop="@drawable/selector_main_tab_1"
android:text="@string/tab01"
android:textSize="14sp"
android:background="@android:color/transparent"
android:textColor="@drawable/selector_text_color_main_tab" />
<RadioButton
android:id="@+id/rb_main_tab_2"
style="@style/MainTabBottom"
android:drawableTop="@drawable/selector_main_tab_2"
android:text="@string/tab02"
android:textSize="14sp"
android:background="@android:color/transparent"
android:textColor="@drawable/selector_text_color_main_tab" />
<RadioButton
android:id="@+id/rb_main_tab_3"
style="@style/MainTabBottom"
android:drawableTop="@drawable/selector_main_tab_3"
android:text="@string/tab03"
android:textSize="14sp"
android:background="@android:color/transparent"
android:textColor="@drawable/selector_text_color_main_tab" />
<RadioButton
android:id="@+id/rb_main_tab_4"
style="@style/MainTabBottom"
android:drawableTop="@drawable/selector_main_tab_4"
android:text="@string/tab04"
android:visibility="visible"
android:textSize="14sp"
android:background="@android:color/transparent"
android:textColor="@drawable/selector_text_color_main_tab" />
<RadioButton
android:id="@+id/rb_main_tab_5"
style="@style/MainTabBottom"
android:drawableTop="@drawable/selector_main_tab_5"
android:text="@string/tab05"
android:textSize="14sp"
android:visibility="visible"
android:background="@android:color/transparent"
android:textColor="@drawable/selector_text_color_main_tab" />
</RadioGroup>
</RelativeLayout>
相信大家看一下就知道这个布局是做什么用的,一个fragment容器+底部导航栏。我在项目的结构是一个activity加几个fragment,项目中有个需求需要跳转到其中一个fragment上,并且隐藏掉底部导航栏也就是radiogroup。
我一开始的想法就是用findviewbyid(R.id.rg_main_tab).setVisibility(View.GONE);这样写的结果就是不仅把radiogroup隐藏了,而且,fragment也不显示了。当时感觉很不可思议,可是挡我打开布局文件以后,我发现了问题所在。
仔细看下上面的布局,可以发现整个页面布局其实是以radiogroup为基准的,view处于radiogroup之上,而fragment容器处于view之上,所以才会出现radiogroup不见以后整个页面都不显示的情况。
以下这是我修改以后的布局,当然继续用RelativeLayout也可以解决问题,只要布局不以radiogroup为基准即可。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/fl_main_tab_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</FrameLayout>
<View
android:id="@+id/line_main_tab"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@android:color/darker_gray" />
<RadioGroup
android:id="@+id/rg_main_tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#28529C"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/rb_main_tab_1"
style="@style/MainTabBottom"
android:background="@android:color/transparent"
android:drawableTop="@drawable/selector_main_tab_1"
android:text="@string/tab01"
android:textColor="@drawable/selector_text_color_main_tab"
android:textSize="14sp" />
<RadioButton
android:id="@+id/rb_main_tab_2"
style="@style/MainTabBottom"
android:background="@android:color/transparent"
android:drawableTop="@drawable/selector_main_tab_2"
android:text="@string/tab02"
android:textColor="@drawable/selector_text_color_main_tab"
android:textSize="14sp" />
<RadioButton
android:id="@+id/rb_main_tab_3"
style="@style/MainTabBottom"
android:background="@android:color/transparent"
android:drawableTop="@drawable/selector_main_tab_3"
android:text="@string/tab03"
android:textColor="@drawable/selector_text_color_main_tab"
android:textSize="14sp" />
<RadioButton
android:id="@+id/rb_main_tab_4"
style="@style/MainTabBottom"
android:background="@android:color/transparent"
android:drawableTop="@drawable/selector_main_tab_4"
android:text="@string/tab04"
android:textColor="@drawable/selector_text_color_main_tab"
android:textSize="14sp"
android:visibility="visible" />
<RadioButton
android:id="@+id/rb_main_tab_5"
style="@style/MainTabBottom"
android:background="@android:color/transparent"
android:drawableTop="@drawable/selector_main_tab_5"
android:text="@string/tab05"
android:textColor="@drawable/selector_text_color_main_tab"
android:textSize="14sp"
android:visibility="visible" />
</RadioGroup>
</LinearLayout>
第一次写博客,记录一下工作中遇到的问题,虽然这是个很简单的问题,但还是希望可以帮到其他androider,之前在项目中也遇到和解决了很多问题,但是都没有整理出来,以后争取把自己所学的东西都整理出来和大家分享,mark。