diff --git a/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java b/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java
new file mode 100644
index 000000000..f69dfb33b
--- /dev/null
+++ b/app/src/main/java/org/schabi/newpipe/views/NewPipeTextView.java
@@ -0,0 +1,60 @@
+package org.schabi.newpipe.views;
+
+import android.content.Context;
+import android.text.Selection;
+import android.text.Spannable;
+import android.util.AttributeSet;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+import org.schabi.newpipe.util.external_communication.ShareUtils;
+
+public class NewPipeTextView extends AppCompatTextView {
+
+ public NewPipeTextView(@NonNull final Context context) {
+ super(context);
+ }
+
+ public NewPipeTextView(@NonNull final Context context, @Nullable final AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public NewPipeTextView(@NonNull final Context context,
+ @Nullable final AttributeSet attrs,
+ final int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ public boolean onTextContextMenuItem(final int id) {
+ final CharSequence text = getText();
+ if (id == android.R.id.shareText) {
+ final String selectedText = getSelectedText(text).toString();
+ if (!selectedText.isEmpty()) {
+ ShareUtils.shareText(getContext(), "", selectedText);
+ }
+ final Spannable spannable = (text instanceof Spannable) ? (Spannable) text : null;
+ Selection.setSelection(spannable, getSelectionEnd());
+ return true;
+ } else {
+ return super.onTextContextMenuItem(id);
+ }
+ }
+
+ @NonNull
+ private CharSequence getSelectedText(@NonNull final CharSequence charSequence) {
+ int min = 0;
+ int max = charSequence.length();
+
+ if (isFocused()) {
+ final int selStart = getSelectionStart();
+ final int selEnd = getSelectionEnd();
+
+ min = Math.max(0, Math.min(selStart, selEnd));
+ max = Math.max(0, Math.max(selStart, selEnd));
+ }
+ return charSequence.subSequence(min, max);
+ }
+}
diff --git a/app/src/main/res/layout-land/activity_player_queue_control.xml b/app/src/main/res/layout-land/activity_player_queue_control.xml
index 4b79d92f6..c2359552e 100644
--- a/app/src/main/res/layout-land/activity_player_queue_control.xml
+++ b/app/src/main/res/layout-land/activity_player_queue_control.xml
@@ -60,7 +60,7 @@
android:padding="8dp"
tools:ignore="RtlHardcoded,RtlSymmetry">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -82,7 +82,7 @@
-
-
-
-
-
-
-
+ android:layout_above="@+id/playback_controls">
-
+ android:background="?attr/selectableItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ android:orientation="vertical"
+ android:padding="8dp"
+ tools:ignore="RtlHardcoded,RtlSymmetry">
-
+
+
+
+
+
-
+ android:layout_centerInParent="true"
+ android:background="#c0000000"
+ android:paddingLeft="30dp"
+ android:paddingTop="5dp"
+ android:paddingRight="30dp"
+ android:paddingBottom="5dp"
+ android:textColor="@android:color/white"
+ android:textSize="22sp"
+ android:textStyle="bold"
+ android:visibility="gone"
+ tools:ignore="RtlHardcoded"
+ tools:text="1:06:29"
+ tools:visibility="visible" />
+
+ android:paddingRight="12dp">
-
-
-
+
diff --git a/app/src/main/res/layout/channel_header.xml b/app/src/main/res/layout/channel_header.xml
index aebb5d613..9366faf2c 100644
--- a/app/src/main/res/layout/channel_header.xml
+++ b/app/src/main/res/layout/channel_header.xml
@@ -49,7 +49,7 @@
tools:visibility="visible" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -85,14 +85,14 @@
android:layout_gravity="end"
android:text="@string/give_back" />
-
-
@@ -105,14 +105,14 @@
android:layout_gravity="end"
android:text="@string/open_in_browser" />
-
-
diff --git a/app/src/main/res/layout/fragment_channel.xml b/app/src/main/res/layout/fragment_channel.xml
index 873f3c884..9e2257539 100644
--- a/app/src/main/res/layout/fragment_channel.xml
+++ b/app/src/main/res/layout/fragment_channel.xml
@@ -30,7 +30,7 @@
android:visibility="gone"
tools:visibility="visible">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -->
-
-
-
- -->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ tools:listitem="@layout/select_channel_item" />
-
-
-
+ tools:listitem="@layout/select_kiosk_item" />
diff --git a/app/src/main/res/layout/select_kiosk_item.xml b/app/src/main/res/layout/select_kiosk_item.xml
index 6cd04ae34..680767bba 100644
--- a/app/src/main/res/layout/select_kiosk_item.xml
+++ b/app/src/main/res/layout/select_kiosk_item.xml
@@ -22,7 +22,7 @@
app:tint="@color/contrastColor"
tools:ignore="RtlHardcoded" />
-
-
-
-
diff --git a/app/src/main/res/layout/settings_category_header_title.xml b/app/src/main/res/layout/settings_category_header_title.xml
index 679b9048c..c7d6920b0 100644
--- a/app/src/main/res/layout/settings_category_header_title.xml
+++ b/app/src/main/res/layout/settings_category_header_title.xml
@@ -1,5 +1,5 @@
-
-
-
-
-
-
-
-
-