У меня есть видеоактивность с заголовком вверху и SeekBar с элементами управления мультимедиа внизу. И заголовок, и SeekBar макеты накладываются на SurfaceView при запуске события касания и исчезают через определенное время. Я также внедряю иммерсивный режим, в котором панели состояния и навигации исчезают вместе с заголовком и SeekBar. Мне удалось освободить место для отображения строки состояния без наложения на макет заголовка, используя атрибут ниже.
android:fitsSystemWindows="true"
Но если я использую тот же атрибут для макета элементов управления мультимедиа в нижней части экрана, это не сработает. В результате панель навигации накладывается на макет. Я не мог понять, почему указанный выше атрибут работает нормально на одном макете, а не на другом. У меня есть индивидуальный макет для элементов управления мультимедиа, у меня есть класс, который расширяет FrameLayout. Атрибут fitSystemWindows не работает для настраиваемых макетов? См. значок в правом нижнем углу на первом снимке экрана. Он перекрывается панелью навигации, как показано на втором снимке экрана.
Я включил часть моего файла класса и макета ниже.
MediaController.java
public class MediaController extends FrameLayout {
//Some private fields are declared here
public MediaController(Context context, boolean useFastForward, boolean useFullScreenButton) {
super(context);
....
}
public MediaController(Context context) {
this(context, true, false);
}
@Override
public void onFinishInflate() {
if (mRoot != null)
initControllerView(mRoot);
}
//Inflating the layout here
protected View makeControllerView() {
LayoutInflater inflate = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mRoot = inflate.inflate(R.layout.media_controller, null);
....
return mRoot;
}
//Lot of other methods here
}
media_controller.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:fitsSystemWindows="true"> <!--Using the attribute here-->
<ImageButton android:id="@+id/pause"
android:layout_gravity="top"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@android:color/transparent"/>
<TextView android:id="@+id/time_current"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"/>
<SeekBar
android:id="@+id/mediacontroller_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="32dip" />
<TextView android:id="@+id/time"
android:layout_gravity="center_horizontal"
android:textColor="@color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageButton android:id="@+id/fullscreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:contentDescription="@string/description" />
</LinearLayout>
а>