Если вы используете sh, чтобы удалить подчеркивание, вам нужно сделать это в Custom Renderer .
[assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))]
namespace CustomEntryUnderline.Android
{
public class CustomEntryRenderer : EntryRenderer
{
public CustomEntryRenderer(Context context)
: base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Background = null;
}
}
}
}
Если вы используете sh, чтобы изменить подчеркивание color, вам необходимо создать ресурс списка состояний Color .
В проекте Android в папке Resources
создайте новый каталог Color
. В нем создайте файл xml, описывающий selector
drawable. Назовем его editable_selector.xml
. Вот как это будет выглядеть:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#00ff00"/>
<item android:state_focused="true" android:color="#ff0000"/>
<item android:state_active="false" android:color="#0000ff"/>
</selector>
Здесь вы можете многое изменить, но в селекторе xml я установил синюю границу по умолчанию, зеленую при нажатии и красную. при фокусировке.
Затем в вашем рендерере вам нужно будет установить BackgroundTintList собственного представления. Мы сделаем это снова в методе OnElementChanged
.
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
var colorStateList = Context.GetColorStateList(Resource.Color.editable_selector);
Control.BackgroundTintList = colorStateList;
}
}
Вот работающий gif:
You don't need to change the "gap", just adjust your layout, because currently the issue is not with the default offset, but with the way the layout is being rendered. Changing the offset should be considered a last resort.
However, if you still want to change the bottom padding between the text and the bottom border, again, in the OnElementChanged
method, set the Control
's padding like this:
Control.SetPadding(0, 0, 0, 120);
Здесь , Я установил только нижний отступ 120.
NB: создание средства визуализации, которое переопределит все элементы, не считается хорошим подходом. Здесь для простоты я экспортирую средства визуализации для встроенного типа Entry
. Лучше обернуть Entry
внутри вашего собственного CustomEntry
класса, чтобы не изменять стили глобально.