color cursor
This commit is contained in:
@@ -4,10 +4,12 @@ import android.annotation.SuppressLint;
|
|||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.appcompat.widget.AppCompatCheckedTextView;
|
import androidx.appcompat.widget.AppCompatCheckedTextView;
|
||||||
|
|
||||||
|
import com.vk.core.extensions.EditTextExt;
|
||||||
import com.vk.core.view.OverlayTextView;
|
import com.vk.core.view.OverlayTextView;
|
||||||
import com.vk.core.view.TintTextView;
|
import com.vk.core.view.TintTextView;
|
||||||
import com.vk.core.view.links.LinkedTextView;
|
import com.vk.core.view.links.LinkedTextView;
|
||||||
@@ -100,6 +102,10 @@ public class TextViewHook implements BaseHook {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (view instanceof EditText) {
|
||||||
|
ThemesUtils.setCursorColor((EditText) view);
|
||||||
|
}
|
||||||
|
|
||||||
VkUiThemer.autoThemeVkuiButtons(textView);
|
VkUiThemer.autoThemeVkuiButtons(textView);
|
||||||
ThemesHacks.fixProfileSelector(textView);
|
ThemesHacks.fixProfileSelector(textView);
|
||||||
ThemesHacks.fixThemedFeed(textView, i);
|
ThemesHacks.fixThemedFeed(textView, i);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package ru.vtosters.lite.utils;
|
package ru.vtosters.lite.utils;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@@ -10,11 +11,13 @@ import android.util.Log;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
|
import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import androidx.appcompat.app.AppCompatDelegate;
|
import androidx.appcompat.app.AppCompatDelegate;
|
||||||
import androidx.appcompat.widget.SwitchCompat;
|
import androidx.appcompat.widget.SwitchCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.core.graphics.ColorUtils;
|
import androidx.core.graphics.ColorUtils;
|
||||||
import androidx.core.graphics.drawable.DrawableCompat;
|
import androidx.core.graphics.drawable.DrawableCompat;
|
||||||
import com.vk.articles.preload.WebCachePreloader;
|
import com.vk.articles.preload.WebCachePreloader;
|
||||||
@@ -29,6 +32,8 @@ import ru.vtosters.lite.hooks.VKUIHook;
|
|||||||
import ru.vtosters.lite.themes.ThemesHacks;
|
import ru.vtosters.lite.themes.ThemesHacks;
|
||||||
import ru.vtosters.lite.ui.wallpapers.WallpapersHooks;
|
import ru.vtosters.lite.ui.wallpapers.WallpapersHooks;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
import static ru.vtosters.lite.utils.AndroidUtils.*;
|
import static ru.vtosters.lite.utils.AndroidUtils.*;
|
||||||
import static ru.vtosters.lite.utils.Preferences.*;
|
import static ru.vtosters.lite.utils.Preferences.*;
|
||||||
|
|
||||||
@@ -97,6 +102,36 @@ public class ThemesUtils {
|
|||||||
return getMutedColor(getAccentColor());
|
return getMutedColor(getAccentColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("DiscouragedPrivateApi")
|
||||||
|
public static void setCursorColor(EditText view) {
|
||||||
|
try {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
|
view.setTextCursorDrawable(recolorDrawable(view.getTextCursorDrawable()));
|
||||||
|
} else {
|
||||||
|
Field field = TextView.class.getDeclaredField("mCursorDrawableRes");
|
||||||
|
field.setAccessible(true);
|
||||||
|
int drawableResId = field.getInt(view);
|
||||||
|
|
||||||
|
field = TextView.class.getDeclaredField("mEditor");
|
||||||
|
field.setAccessible(true);
|
||||||
|
Object editor = field.get(view);
|
||||||
|
|
||||||
|
Drawable drawable = ContextCompat.getDrawable(view.getContext(), drawableResId);
|
||||||
|
drawable.setColorFilter(getAccentColor(), PorterDuff.Mode.SRC_IN);
|
||||||
|
Drawable[] drawables = {drawable, drawable};
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
field = editor.getClass().getDeclaredField("mCursorDrawable");
|
||||||
|
} else {
|
||||||
|
field = editor.getClass().getDeclaredField("mDrawableForCursor");
|
||||||
|
}
|
||||||
|
field.setAccessible(true);
|
||||||
|
field.set(editor, drawables);
|
||||||
|
}
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static int getMutedColor(int color) {
|
public static int getMutedColor(int color) {
|
||||||
return ColorUtils.blendARGB(color, (isDarkTheme() ? Color.BLACK : Color.WHITE), 0.5f);
|
return ColorUtils.blendARGB(color, (isDarkTheme() ? Color.BLACK : Color.WHITE), 0.5f);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user