自定义TextView上的保证金

时间:2013-07-19 20:46:31

标签: android textview margin

我检查了很多答案,但到目前为止没有任何帮助。

我正在尝试扩展android的TextView并在代码中设置此自定义视图的边距,因为我将在按钮按下和类似的事情上实例化它们。它被添加到LinearLayout。这就是我得到的东西:

public class ResultsView extends TextView {
    public ResultsView(Context context) {
        super(context);
        LinearLayout.LayoutParams layout = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        layout.setMargins(15, 15, 15, 15);
        setLayoutParams(layout);
    }
}

任何地方都没有任何保证金的迹象。

编辑:我可能想要添加,如果我在xml中指定一个边距值,它确实有效。

2 个答案:

答案 0 :(得分:16)

我认为问题在于,当您尝试添加边距时,layoutparams尚未设置,为什么不尝试在ResultsView类中重写此方法:

       protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
            MarginLayoutParams margins = MarginLayoutParams.class.cast(getLayoutParams());
            int margin = 15;
            margins.topMargin = margin;
            margins.bottomMargin = margin;
            margins.leftMargin = margin;
            margins.rightMargin = margin;
            setLayoutParams(margins);
        };

并删除构造函数中的代码,这样边距将被应用,直到我们确定我们有一个视图的布局对象,希望这有帮助

问候!

答案 1 :(得分:0)

您现在需要将此视图添加到当前显示的布局中。你错过了下一步。 所以现在你需要这样的东西:

    currentlayout.addview(View);