600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > android:gravity与android:layout_gravity的区别 以及代码设置对应属性

android:gravity与android:layout_gravity的区别 以及代码设置对应属性

时间:2023-08-02 11:54:47

相关推荐

android:gravity与android:layout_gravity的区别 以及代码设置对应属性

记录一下,怕以后忘记:

属性说明:

android:gravity:

① RelativeLayout、LinearLayout,等容器的子View相对自身的位置。

PS:FrameLayout没有该属性,大家可以在XML文件中试试 - -…

② Button、TextView等有内容的View,其内容相对自身的位置。

PS:部分View也没有该属性,如ImageView。

android:layout_gravity:

自身相对父容器的位置

代码中设置相应属性:

android:gravity

调用控件的setGravity(int gravity);方法。

部分控件没有该,因为本身就不支持该属性的设置,上面已经列举了一些,可能不全面,大家用的的时候可以试试哈。

android:layout_gravity:

因为该属性的含义是相对父容器的位置,所以该属性没有直接放在控件类里,而是放在了容器类的内部类LayoutParams里(如RelativeLayout.LayoutParams);

贴个Gravity的代码,配置文件的就不写了:

package com.example.simplegravity;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.FrameLayout;import android.widget.TextView;/*** android:gravity 与 android:layout_gravity的区别*/public class SimpleGravityActivity extends Activity implements View.OnClickListener {private FrameLayout.LayoutParams tvLp;private FrameLayout.LayoutParams btnLp;private TextView textView;private FrameLayout frameLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 父容器frameLayout = new FrameLayout(this);frameLayout.setBackgroundColor(Color.WHITE);setContentView(frameLayout);// 子ViewtextView = new TextView(this);textView.setBackgroundColor(Color.BLACK);textView.setTextColor(Color.WHITE);textView.setText("A");textView.setTextSize(22);//视图添加tvLp = new FrameLayout.LayoutParams(400, 400);frameLayout.addView(textView, tvLp);// 视图切换按钮Button btn = new Button(this);btn.setText("change gravity and layout_gravity");btnLp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);btnLp.gravity = Gravity.CENTER;// 其实这里用的就是android:layout_gravityframeLayout.addView(btn, btnLp);btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {// 切换TextView相对父容器的位置(android:layout_gravity)tvLp.gravity = Gravity.RIGHT | Gravity.BOTTOM;// 切换TextView的内容相对自身的位置(android:gravity)textView.setGravity(Gravity.RIGHT | Gravity.BOTTOM);// 刷新视图textView.requestLayout();}}

gravity改变的前后对比图:

本人android新人,有不对的地方请多多指教。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。