您的位置:首页 > 移动开发 > Android开发

android linearLayout 和 RelativeLayout使用的注意事项

2014-12-28 16:20 489 查看

近期在项目中遇到了一个小问题,这个问题之前一直都没有注意到,现在分享出来,大神看不见。

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。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: