我已将TextView以编程方式添加到LinearLayout中,并且在某些外部事件上,我希望将TextView的下边距减小到-10,因为我尝试了以下内容.
LinearLayout.LayoutParams lastTxtParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lastTxtParams.setMargins(0, 0, 0, -10);
mOldTextView.setLayoutParams(lastTxtParams);
mOldTextView.invalidate();
Run Code Online (Sandbox Code Playgroud)
修改已添加到View的窗口小部件的边距是否正确?
一些如何不工作.
Deb*_*ati 186
TextView forgot_pswrd = (TextView) findViewById(R.id.ForgotPasswordText);
forgot_pswrd.setOnTouchListener(this);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
llp.setMargins(50, 0, 0, 0); // llp.setMargins(left, top, right, bottom);
forgot_pswrd.setLayoutParams(llp);
Run Code Online (Sandbox Code Playgroud)
我这样做了,效果很好.也许当你在-ve中给出价值时,这就是你的代码无效的原因.您只需将此代码放在创建视图引用的位置即可.
Dan*_*ong 60
您在xml中的布局可能已经包含了layout_margin(Left | Right | etc)属性,这意味着您需要访问该xml生成的对象并对其进行修改.
我发现这个解决方案非常简单:
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) mTextView
.getLayoutParams();
mlp.setMargins(adjustmentPxs, 0, 0, 0);
break;
Run Code Online (Sandbox Code Playgroud)
获取textview的LayoutParams实例,将其向下转换为MarginLayoutParams,并使用setMargins方法设置边距.
小智 10
这个是棘手的问题,我在表格布局的一行中设置了textview到textview.见下文:
TableLayout tl = new TableLayout(this);
tl.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
TableRow tr = new TableRow(this);
tr.setBackgroundResource(R.color.rowColor);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(4, 4, 4, 4);
TextView tv = new TextView(this);
tv.setBackgroundResource(R.color.textviewColor);
tv.setText("hello");
tr.addView(tv, params);
TextView tv2 = new TextView(this);
tv2.setBackgroundResource(R.color.textviewColor);
tv2.setText("hi");
tr.addView(tv2, params);
tl.addView(tr);
setContentView(tl);
Run Code Online (Sandbox Code Playgroud)
导入LayoutParams以在表格行中使用的类是:
import android.widget.**TableRow**.LayoutParams;
Run Code Online (Sandbox Code Playgroud)
重要的是要注意我添加了表行的类.类似地,许多其他类可用于使用LayoutParams,例如:
import android.widget.**RelativeLayout**.LayoutParams;
Run Code Online (Sandbox Code Playgroud)
导入android.widget.LinearLayout .LayoutParams;
所以要相应地使用
setMargins()设置TextView的INNER边距,而不是布局边距.那是你想做的吗?这两个不同的边距可能非常复杂.
如果要设置布局边距,请更改TextView的LayoutParams(textview.getLayoutParams(),然后更改返回的LayoutParams对象上的参数).
您无需更改LinearLayout上的任何内容.
此致,奥利弗