`
stone02111
  • 浏览: 214858 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

 
阅读更多

 

在进行UI布局的时候,可能经常会用到 android:gravity  和 android:layout_Gravity 这两个属性。

 

关于这两个属性的区别,网上已经有很多人进行了说明,这边再简单说一下。 (资料来自网络)

 

 

 


 

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:paddingLeft="30px"  按钮上设置的内容离按钮左边边界30个像素
android:layout_marginLeft="30px"  整个按钮离左边设置的内容30个像素

 


下面回到正题, 我们可以通过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同时我们设置EditText的android:layout_gravity="right"来让EditText组件在LinearLayout中居右显示。看下效果:

 

 

 

正如我们所看到的,在EditText中,其中的文字已经居中显示了,而EditText组件自己也对齐到了LinearLayout的右侧。

 

附上布局文件:

 

 

<LinearLayout  
   xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent">  
    <EditText  
        android:layout_width="wrap_content"  
        android:gravity="center"  
        android:layout_height="wrap_content"  
        android:text="one"  
        android:layout_gravity="right"/>  
</LinearLayout>
 

 

 

 


 

那么上面是通过布局文件的方式来设置的。,相信大家都曾写过,那么如何通过Java代码来设置组件的位置呢?

 

依然考虑实现上述效果。

 

通过查看SDK,发现有一个setGravity方法, 顾名思义, 这个应该就是用来设置Button组件中文字的对齐方式的方法了。

仔细找了一圈,没有发现setLayoutgravity方法, 有点失望。 不过想想也对, 如果这边有了这个方法, 将Button放在不支持Layout_Gravity属性的Container中如何是好! 

 

于是想到, 这个属性有可能在Layout中 , 于是仔细看了看LinearLayout 的 LayoutParams, 果然有所发现, 里面有一个 gravity 属性,相信这个就是用来设置组件相对于容器本身的位置了,没错,应该就是他了。

 

实践后发现,如果如此, 附上代码,各位自己看下。

 

 

 

代码比较简单,但是发现它们还是花了我一点时间的。

 

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);  
//此处相当于布局文件中的Android:gravity属性  
button.setGravity(Gravity.CENTER);  
  
LinearLayout linear = new LinearLayout(this);  
//注意,对于LinearLayout布局来说,设置横向还是纵向是必须的!否则就看不到效果了。  
linear.setOrientation(LinearLayout.VERTICAL);  
linear.addView(button);  
setContentView(linear); 
 

 

或者这样也可以:

 

Button button  = new Button(this);  
button.setText("One");  
//此处相当于布局文件中的Android:gravity属性  
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);
 

 

 

好了,效果图就不上了,跟上面的一样。 就讲这么多。

分享到:
评论

相关推荐

    layout_gravity和gravity区别以及应用

    在Android开发中,`layout_gravity`和`gravity`是两个关键属性,它们都与控件的对齐和定位有关,但应用场景和作用对象不同。本文将深入探讨这两个属性的区别,以及它们在实际开发中的应用。 首先,我们来了解`...

    Android 五种Layout 布局

    在Android开发中,布局(Layout)是构建用户界面的基础元素,它定义了屏幕上各个组件的排列方式和相互关系。本文将深入探讨Android的五种主要布局:LinearLayout、RelativeLayout、FrameLayout、GridLayout以及...

    AndroidXML布局属性详解

    Android XML 布局属性是 Android 应用程序中最基本也是最重要的一部分。它负责控制屏幕上的各种控件的布局和排列。 Android XML 布局属性可以分为三类:第一类是属性值为 true 或 false 的布局属性,第二类是属性值...

    Android_layout.rar_android_android 布局_layout

    在Android开发中,布局(Layout)是构建用户界面的核心元素,它定义了应用程序屏幕上元素的排列方式和相互关系。Android提供了多种布局管理器,如LinearLayout、RelativeLayout、ConstraintLayout等,每种布局都有其...

    android布局属性RelativeLayout详解.

    3. android:layout_gravity:设置该 view 相对与父 view 的位置,例如设置 Button 在 LinearLayout 里靠左、靠右等位置。 4. android:scaleType:控制图片如何 resized/moved 来匹配 ImageView 的 size。 在实际...

    Android中gravity与layout_gravity的使用区别分析

    – android:gravity设置了按钮上面的文字的显示位置,而android:layout_gravity设置了按钮在布局中的显示位置。–&gt;&lt;LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:...

    ANDROID:控件属性(很全).

    * android:layout_gravity:设置控件相对于父控件的对齐方式,如 android:layout_gravity="right" 则控件靠右对齐。 ImageView 控件属性 Android 中的 ImageView 控件属性可以控制图片的显示方式。 * android:...

    Android布局文件的属性值解析

    `android:layout_width` 和 `android:layout_height` 属性分别用于设置视图在父布局中的宽度和高度。除了dp或px单位外,还可以使用 `match_parent` 或 `wrap_content`。例如: ```xml android:layout_width=...

    android布局属性详解

    本篇文章将深入解析Android布局中的一些重要属性,尤其是针对RelativeLayout和EditText的一些关键特性。 首先,我们关注RelativeLayout,这是一种允许元素相对彼此定位的布局。以下是一些主要的RelativeLayout属性...

    Android_布局属性大全.pdf

    标题与描述概述的知识点主要集中在Android布局属性的详细介绍,这些属性是Android开发中用于定义界面布局的关键要素。根据所提供的信息,我们可以将知识点分为三大类别: ### 第一类:属性值为布尔型(true/false)的...

    android:layout_gravity和android:gravity的区别

    在Android开发中,布局管理是至关重要的,而`android:gravity`和`android:layout_gravity`是两个常用于设置控件位置的属性,它们在布局中的应用有所不同,理解它们的区别对于创建美观且功能完善的用户界面至关重要。...

    android布局属性大全(总结)

    ### Android布局属性详解 #### 一、概述 在Android应用开发过程中,良好的用户界面设计是提升用户体验的关键之一。其中,布局是构成用户界面的基础。本文档汇总了Android中常用的布局属性,旨在帮助开发者更好地...

    android布局属性详解.

    本文将深入探讨Android布局中的关键属性,并通过示例解释它们的具体用途及应用场景。 #### RelativeLayout的重要属性 ##### 第一类:属性值为true或false 这类属性主要用来控制视图组件在其父容器中的位置。 - **...

    Android Layout样式布局

    - 用途:与`android:gravity`不同,这个属性用于指定控件在父容器中的对齐方式。 - 示例:`android:layout_gravity="center"` - **android:textSize** - 用途:设置控件中文本的字体大小。 - 示例:`android:...

    android 各种Layout用到的一些重要的属性

    - **`android:layout_centerInParent`**:设置此属性为 `true` 可以使视图在其父容器中水平和垂直都居中。如果不设置或设为 `false`,则默认不居中。 - **`android:layout_alignParentBottom`**:设置此属性为 `true...

    android_所有布局属性和UI控件

    在Android开发中,布局属性和UI控件是创建用户界面的核心元素。理解并熟练掌握这些属性和控件,对于构建高效、美观的应用程序至关重要。以下是对给定文件中提到的关键知识点的深入解析: ### 一、RelativeLayout...

    android—布局组件详细属性.pdf

    - `android:layout_gravity`:设置视图相对于其父视图的位置,例如在`LinearLayout`中,可以将按钮设置为靠左或靠右。 7. `ImageView`的`android:scaleType`属性: - `CENTER`:保持原图尺寸居中显示,超出部分会...

    Android布局属性详解.doc

    本文将深入解析Android布局属性,特别是针对`RelativeLayout`的一些重要属性,以及涉及`EditText`、`gravity`和`scaleType`的特性。 首先,`RelativeLayout`是一个常用的布局容器,它允许元素相对其他元素或父容器...

Global site tag (gtag.js) - Google Analytics