`
stone02111
  • 浏览: 215218 次
  • 性别: 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_布局详解

    ### Android布局详解 #### 一、概述 在Android应用开发中,布局管理是构建用户界面的基础。合理且灵活地使用不同的布局方式可以帮助开发者创建出既美观又实用的应用界面。本篇文章将详细介绍Android中的几种基本...

    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