如何以编程方式正确设置按钮上的可绘制填充?

时间:2018-11-06 14:40:43

标签: c# android xamarin.android

我无法设置按钮的填充以使内容(文本+可绘制)居中。

到目前为止,这是我去过的地方

Button done = new Button(this)
{
    Text = GetText((int)typeof(Resource.String).GetField("goalreached").GetValue(null))
};

    done.LayoutParameters = doneButtonParams;
    done.SetBackgroundResource(Resource.Drawable.DoneGreenYakaButton);
    done.Typeface = Typeface.CreateFromAsset(Assets, "fonts/Ubuntu-Medium.ttf");
    done.SetTextColor(Color.White);
    done.SetTextSize(Android.Util.ComplexUnitType.Sp, 12);
    doneButtonParams.ColumnSpec = GridLayout.InvokeSpec(0, 2); // Setting colspan = 2
    var check = GetDrawable(Resource.Drawable.ic_check_16px);
    check.SetBounds(0, 0, 32, 32); // Set the image size
    check.SetTint(Color.White); // Set the image color
    done.SetCompoundDrawables(null, null, check, null);

结果是这样的:

enter image description here

很显然,我希望复选标记更靠近文本,并与按钮左侧的文本具有相同的填充。

我在这里想念什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

我对用于移动开发的xamarin不熟悉,但是Android的原生方法是在按钮本身上设置可绘制的填充。 setCompoundDrawablePadding(int)是用于调整文本和可绘制对象之间距离的本地方法。

例如:

done.setCompoundDrawablePadding(15);

编辑:我意识到您正在尝试在选中标记的外部添加填充,这可以通过普通的旧setPadding(int, int, int, int)来实现。

例如:

setPadding(0,0,15,0);