在XML中丢失焦点时隐藏布局

时间:2013-02-12 17:07:37

标签: android layout tabs lost-focus

我有以下xml文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/FrameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
</android.support.v4.view.ViewPager>

<LinearLayout
    android:id="@+id/musicLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:gravity="center"
    android:orientation="horizontal"
    android:padding="10dp"
    android:focusable="true"
    android:visibility="visible" >

    <ImageView
        android:id="@+id/backward"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/backward" />

    <ImageView
        android:id="@+id/stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="8dp"
        android:src="@drawable/stop" />

    <ImageView
        android:id="@+id/pausePlay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="8dp"
        android:src="@drawable/play" />

    <ImageView
        android:id="@+id/forward"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="8dp"
        android:paddingRight="10dp"
        android:src="@drawable/forward" />

</LinearLayout>

framelayout用于带有标签的操作栏,这些标签是上述布局中的viewpager。动作栏完美无缺。我想要解决的问题是当我在线性布局外面按下时,需要隐藏最后一个线性布局,它实际上是一个漂浮在屏幕底部的媒体播放器!我测试了musicLayout中的和网页浏览器中的,但没有任何反应!我究竟做错了什么?
编辑:
如果有帮助,每个选项卡都是一个具有自己布局的片段,并添加到viewPager。

1 个答案:

答案 0 :(得分:2)

我认为解决此问题的最简单方法是添加一个与ViewGroup的父视图匹配的透明视图。基本上,您可以将ViewPager,LinearLayout和View放在同一级别。然后,您可以在透明视图上注册onClickListener,这应该可以解决问题。

布局应该像这样简单:

<View android:id="@+id/transparent_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:clickable="true"/>