У меня есть видеозапись с заголовком вверху и SeekBar
с элементами управления мультимедиа внизу. Как заголовок, так и макеты SeekBar
накладываются на SurfaceView
, когда происходит событие касания, и они исчезают через определенное время. Я также применяю режим Immersive, в котором исчезают как статусные, так и навигационные полосы вместе с заголовком и 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>
Я настоятельно рекомендую вам поделиться короткой видеороликой (или скриншотом) с этой проблемой, а затем объяснить, как она должна работать. – Nactus
@Nactus Я добавил скриншоты. Спасибо. – Prudhvi
«Смотрите значок внизу справа на первом снимке экрана.Он накладывается навигационной панелью, как показано на втором снимке экрана », поэтому, если вы правильно поняли, что хотите скрыть навигационную панель, когда ваш медиа-плеер активен, правильно? (Первое изображение - как это сделать должен выглядеть, а вторая картинка - это то, что вы получаете, правильно?) – Nactus