编程语言
首页 > 编程语言> > android – 为什么我不能在以编程方式添加的视图上设置高程?

android – 为什么我不能在以编程方式添加的视图上设置高程?

作者:互联网

免责声明:我使用的是Xamarin.Android.

我创建了一个视图,设置了它的高程,然后将其添加到我的主布局中.触发事件时,视图已成功添加到布局中,但没有任何高程阴影.

这是我正在使用的:

以编程方式添加的视图:

public class TooltipTest : FrameLayout
{
    private Context context;
    private ShapeDrawable box;
    private View carrot;
    private string message;

    public TextView TooltipText
    {
        get;
        private set;
    }

    public TooltipTest(Context context, string message) : base(context)
    {
        this.context = context;
        this.message = message;

        Initialize();
    }

    private void Initialize()
    {
        CreateText();
    }

    private void CreateText()
    {
        int paddingTopBottom = 30;
        int paddingLeftRight = 27;

        TooltipText = new TextView(context);
        TooltipText.Text = message;
        TooltipText.SetTextColor(new Color(ContextCompat.GetColor(context, Resource.Color.tooltipText)));
        TooltipText.SetTextSize(ComplexUnitType.Sp, 14f);
        TooltipText.SetPadding(paddingLeftRight, paddingTopBottom, paddingLeftRight, paddingTopBottom);
        TooltipText.SetBackgroundColor(new Color(ContextCompat.GetColor(context, Resource.Color.tooltipBackground)));

        AddView(TooltipText);
    }

要添加视图的事件:

        ButtonTest.Click += (sender, e) => {
            var tooltip = new TooltipTest(this, Resources.GetString(Resource.String.test_text));
            var tooltipParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
            tooltip.Elevation = 20f;
            ParentLayout.AddView(tooltip, tooltipParams);
        };

关于为什么阴影没有显示的任何想法?我已经尝试在工具提示上设置SetClipToPadding(false)和SetClipChildren(false),但这没有任何效果.

解决方法:

使用AppCompat方法ViewCompat.SetElevation(View,int)根据需要设置高程.但是在Lollipop之前的设备上,该方法似乎无能为力.
我发现为前Lollipop UI元素渲染阴影的唯一方法是使用背景代替:

  android:background="@android:drawable/dialog_holo_light_frame"

如果您想进一步了解此主题,请转到此reddit主题并搜索高程.那里有非常好的更新信息.

标签:android,xamarin-android,android-elevation
来源: https://codeday.me/bug/20190623/1268734.html