我检查了很多答案,但到目前为止没有任何帮助。
我正在尝试扩展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中指定一个边距值,它确实有效。
答案 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);