南宁市网站开发,徐州软件外包,网站与手机app是一体吗,h5制作平台排名LinearLayout有两个非常相似的属性#xff1a; android:gravity与android:layout_gravity。 他们的区别在于#xff1a; android:gravity 属性是对该view中内容的限定#xff0e;比如一个button 上面的text. 你可以设置该text 相对于view的靠左#xff0c;靠右等位置…LinearLayout有两个非常相似的属性 android:gravity与android:layout_gravity。 他们的区别在于 android:gravity 属性是对该view中内容的限定比如一个button 上面的text. 你可以设置该text 相对于view的靠左靠右等位置android:layout_gravity是用来设置该view相对与父view 的位置比如一个button 在linearlayout里你想把该button放在linearlayout里靠左、靠右等位置就可以通过该属性设置 即android:gravity用于设置View中内容相对于View组件的对齐方式而android:layout_gravity用于设置View组件相对于Container的对齐方式。 原理跟android:paddingLeft、android:layout_marginLeft有点类似。如果在按钮上同时设置这两个属性。 android:paddingLeft30px 按钮上设置的内容离按钮左边边界30个像素android:layout_marginLeft30px 整个按钮离左边设置的内容30个像素 下面回到正题 我们可以通过设置android:gravitycenter来让EditText中的文字在EditText组件中居中显示同时我们设置EditText的android:layout_gravityright来让EditText组件在LinearLayout中居右显示。看下效果 正如我们所看到的在EditText中其中的文字已经居中显示了而EditText组件自己也对齐到了LinearLayout的右侧。 附上布局文件 [xhtml] view plaincopyprint? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android android:orientationvertical android:layout_widthfill_parent android:layout_heightfill_parent EditText android:layout_widthwrap_content android:gravitycenter android:layout_heightwrap_content android:textone android:layout_gravityright/ /LinearLayout 那么上面是通过布局文件的方式来设置的。相信大家都曾写过那么如何通过Java代码来设置组件的位置呢 依然考虑实现上述效果。 通过查看SDK发现有一个setGravity方法 顾名思义 这个应该就是用来设置Button组件中文字的对齐方式的方法了。 仔细找了一圈没有发现setLayoutgravity方法 有点失望。 不过想想也对 如果这边有了这个方法 将Button放在不支持Layout_Gravity属性的Container中如何是好 于是想到 这个属性有可能在Layout中 于是仔细看了看LinearLayout 的 LayoutParams 果然有所发现 里面有一个 gravity 属性相信这个就是用来设置组件相对于容器本身的位置了没错应该就是他了。 实践后发现如果如此 附上代码各位自己看下。 代码比较简单但是发现它们还是花了我一点时间的。 [java] view plaincopyprint? Button button new Button(this); button.setText(One); LinearLayout.LayoutParams lp new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //此处相当于布局文件中的Android:layout_gravity属性 lp.gravity Gravity.RIGHT; button.setLayoutParams(lp); //此处相当于布局文件中的Androidgravity属性 button.setGravity(Gravity.CENTER); LinearLayout linear new LinearLayout(this); //注意对于LinearLayout布局来说设置横向还是纵向是必须的否则就看不到效果了。 linear.setOrientation(LinearLayout.VERTICAL); linear.addView(button); setContentView(linear); 或者这样也可以 [java] view plaincopyprint? Button button new Button(this); button.setText(One); //此处相当于布局文件中的Androidgravity属性 button.setGravity(Gravity.CENTER); LinearLayout linear new LinearLayout(this); //注意对于LinearLayout布局来说设置横向还是纵向是必须的否则就看不到效果了。 linear.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams lp new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //此处相当于布局文件中的Android:layout_gravity属性 lp.gravity Gravity.RIGHT; linear.addView(button, lp); setContentView(linear); 好了效果图就不上了跟上面的一样。 就讲这么多。 另外要设置在RelativeLayout中的位置时使用addRule方法如下 [java] view plaincopyprint? params new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.CENTER_IN_PARENT); mContainer.addView(progress,params); 转载于:https://www.cnblogs.com/liubingna/p/3403421.html