Ada*_*gyi 309 android android-layout
我的问题很简单,
如何以编程方式设置我的按钮layout_gravity?
我在互联网上发现了这个,但它只是抛出了一个Nullpointer异常:
Button MyButton = new Button(this);
LinearLayout.LayoutParams lllp=(LinearLayout.LayoutParams)MyButton.getLayoutParams();
lllp.gravity=Gravity.RIGHT;
MyButton.setLayoutParams(lllp);
MyLinearLayout.addView(MyButton);
Run Code Online (Sandbox Code Playgroud)
有解决方案吗
Kar*_*thi 518
Java的
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
params.gravity = Gravity.TOP;
button.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
科特林
val params = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).apply {
weight = 1.0f
gravity = Gravity.TOP
}
Run Code Online (Sandbox Code Playgroud)
对于重力值以及如何设置重力检查重力.
基本上,您应该LayoutParams根据父母选择.它可以是RelativeLayout,LinearLayout等...
Ukn*_*ght 53
我不想复活旧线程,但这是一个无法正确回答的问题,而且我自己遇到了这个问题.
这里有点长,如果你只对答案感兴趣,请一直向下滚动到代码:
android:gravity和android:layout_gravity的工作方式不同.这是我读过的一篇帮助我的文章.
文章的GIST:重力影响高度/宽度分配后的视图.因此,重心不会影响完成FILL_PARENT的视图(将其视为自动边距).layout_gravity center将影响FILL_PARENT视图(将其视为自动填充).
基本上,android:layout_gravity不能以编程方式访问,只有android:gravity.在OP的情况和我的情况下,接受的答案不会将按钮垂直居中.
改进Karthi的答案:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
链接到LinearLayout.LayoutParams.
android:layout_gravity显示"无相关方法"意思无法以编程方式访问.而重力是班上的一个领域.
Yas*_*mar 23
MyButton.setGravity(Gravity.RIGHT);
Run Code Online (Sandbox Code Playgroud)
对于layout_gravity,请使用"karthi"所述的答案.此方法设置重力以将子项放在视图中.
小智 17
我在GridLayout中按钮上以编程方式设置layout_gravity时遇到了类似的问题.
诀窍是在按钮被添加到父(GridLayout)之后在按钮layoutParams上设置重力,否则将忽略重力.
grid.addView(button)
((GridLayout.LayoutParams)button.getLayoutParams()).setGravity(int)
Run Code Online (Sandbox Code Playgroud)
vov*_*ost 11
如果要更改layou_gravity现有视图,请执行以下操作:
((FrameLayout.LayoutParams) view.getLayoutParams()).gravity = Gravity.BOTTOM;
Run Code Online (Sandbox Code Playgroud)
请记住LayoutParams根据视图所在的布局类型使用权限.例如:
LinearLayout.LayoutParams
Run Code Online (Sandbox Code Playgroud)
小智 11
layoutParams2.gravity = Gravity.RIGHT|Gravity.BOTTOM;
Run Code Online (Sandbox Code Playgroud)
使用它来添加mor而不是一个引力
KOTLIN 在 FrameLayout 上设置多个重力而不改变大小:
// assign more than one gravity,Using the operator "or"
var gravity = Gravity.RIGHT or Gravity.CENTER_VERTICAL
// update gravity
(pagerContainer.layoutParams as FrameLayout.LayoutParams).gravity = gravity
// refresh layout
pagerContainer.requestLayout()
Run Code Online (Sandbox Code Playgroud)
这个问题很老,但我遇到了同样的问题并且像这样解决了
LayoutParams lay = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)
lay.gravity = Gravity.CENTER;
Run Code Online (Sandbox Code Playgroud)
如果你想把一个视图放在父母的中心,你可以用下面的代码做..
public class myLayout extends LinearLayout {
public myLayout(Context context) {
super(context);
RelativeLayout vi = (RelativeLayout) ((LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
R.layout.activity_main, null);
LinearLayout.LayoutParams cc = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
cc.gravity = Gravity.CENTER;
this.setGravity(Gravity.CENTER);
this.addView(vi);
}
}
Run Code Online (Sandbox Code Playgroud)
这些代码部分使 LinearLayout 将第一个视图元素放在父元素的中心。所以,我们系统不考虑初始宽度和高度在中心排列视图。我的代码部分做得很好。
小智 5
我使用类似的东西:(Xamarin 和 C# 代码)
LinearLayout linLayout= new LinearLayout(this);
linLayout.SetGravity(GravityFlags.Center);
TextView txtView= new TextView(this);
linLayout.AddView(txtView);
Run Code Online (Sandbox Code Playgroud)
SetGravity 将我的 textView 放在布局的中心。所以SetGravity布局属性指的是布局内容
如果您需要为视图设置重力,请使用以下内容
Button b=new Button(Context);
b.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)
要为 Button 设置 layout_gravity,请为 layoutparams 使用重力场作为
LayoutParams lp=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lp.gravity=Gravity.CENTER;
Run Code Online (Sandbox Code Playgroud)
试试这个希望这会清除谢谢
| 归档时间: |
|
| 查看次数: |
261548 次 |
| 最近记录: |