首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LinearLayout水平重力setGravity()不能以编程方式工作

LinearLayout是Android中的一个布局容器,用于在水平或垂直方向上排列子视图。setGravity()是LinearLayout的一个方法,用于设置子视图在容器中的对齐方式。

然而,setGravity()方法在设置水平重力时,不能以编程方式生效的原因可能有以下几点:

  1. 布局方向设置错误:LinearLayout有两种布局方向,分别是水平(HORIZONTAL)和垂直(VERTICAL)。如果布局方向设置为垂直,那么设置水平重力是无效的。需要确保LinearLayout的布局方向为水平。
  2. 子视图宽度设置错误:如果子视图的宽度设置为"wrap_content",那么设置水平重力是无效的。因为子视图的宽度会根据内容自适应,无法对齐到容器的边界。需要将子视图的宽度设置为"match_parent"或具体的数值。
  3. 子视图权重设置错误:如果子视图的权重(weight)属性设置不当,也会导致水平重力无效。权重属性用于控制子视图在容器中的占比,如果子视图的权重不为0且总权重不为1,那么设置水平重力可能会被覆盖。需要确保子视图的权重设置正确。

综上所述,要使LinearLayout的水平重力setGravity()方法以编程方式生效,需要确保布局方向为水平,子视图的宽度设置为"match_parent"或具体数值,子视图的权重设置正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Kotlin入门(19)Android的基础布局

    线性布局LinearLayout是最常用的布局,顾名思义,它下面的子视图像是用一根线串了起来,所以其内部视图的排列是有顺序的,要么从上到下垂直排列,要么从左到右水平排列。排列顺序只能指定一维方向的视图次序,可是手机屏幕是个二维的平面,这意味着还剩另一维方向需要指定视图的对齐方式。故而线性布局主要有以下两种属性设置方法: 1. setOrientation: 设置内部视图的排列方向。LinearLayout.HORIZONTAL表示水平布局,LinearLayout.VERTICAL表示垂直布局。 2. setGravity: 设置内部视图的对齐方式。Gravity.LEFT表示靠左对齐、Gravity.RIGHT表示靠右对齐、Gravity.TOP表示靠上对齐、Gravity.BOTTOM表示靠下对齐、Gravity.CENTER表示居中对齐。 空白距离margin和间隔距离padding是另外两个常见的视图概念,margin指的当前视图与周围视图的距离,而padding指的是当前视图与内部视图的距离。这么说可能有些抽象,接下来还是做个实验,看看它们的显示效果到底有什么不同。下面是个实验用的布局文件内容,通过背景色观察每个视图的区域范围:

    01

    android自定义toast样式_android设置对话框宽度

    在一般的android开发中我们一般弹出一些提示信息,例如 已打开蓝牙,wifi之类的提示,我们都是会选择Toast进行弹出。今天我们的客户提出们应用弹出提示太小,用户不注意的情况下,容易被忽略掉,要弹出的宽度填充整个屏幕,首先想到是不是需要自定义Toast,经过自己的一番研究后,发现不需要自定Toast,用现有的Toast就可以轻松实现了。 public void showToast(Context conext,String str){ if(mToast ==null){ Log.i(“showToast”,”showToast…….”); mToast = Toast.makeText(conext, null, Toast.LENGTH_SHORT); mToast.setGravity(Gravity.CENTER, 0, 0); LinearLayout toastView = (LinearLayout)mToast.getView(); WindowManager wm = (WindowManager)conext.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); tv=new TextView(this); toastView.setBackgroundResource(R.mipmap.bg); tv.setTextSize(40); toastView.setGravity(Gravity.CENTER); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(0, 0, 0, 180); tv.setLayoutParams(params); mToast.setView(toastView); toastView.addView(tv); } tv.setText(str); mToast.show(); } 就可以实现下面的效果。

    03

    Android开发笔记(三十五)页面布局视图

    布局视图有五类,分别是线性布局LinearLayout、相对布局RelativeLayout、框架布局FrameLayout、绝对布局AbsoluteLayout、表格布局TableLayout。其中最常用的是LinearLayout,它适用于包括简单布局在内的多数情况;其次常用的是RelativeLayout,它适用于一些复杂布局,主要是对相对位置要求较多的情况;再次就是FrameLayout,它一般用于需要叠加展示的场合,比如说给整个页面设置一个背景布局等等。AbsoluteLayout和TableLayout实际中很少用,基本不用关心。 另外还有纵向滚动视图ScrollView,以及横向滚动视图HorizontalScrollView,其作用顾名思义便是让它们的子视图可以在某个方向上滚动罢了。

    03

    Android开发笔记(一百四十六)仿支付宝的支付密码输入框

    编辑框EditText算是Android的一个基础控件了,表面上看,EditText只负责接收用户手工输入的文本;可实际上,要把这看似简单的文本输入做得方便易用,并不是一个简单的事情。因为用户可能希望App会更加智能一些,比如用户希望编辑框提供关键词联想功能,又比如用户希望编辑框能够自我纠错等等;所以,Android从设计之初就努力尝试解决这些问题,先是自带了自动完成编辑框AutoCompleteTextView,后来又在Android5.0以后提供了文本输入布局TextInputLayout。 然而,计划赶不上变化,开发工作中总有一些现有控件无法直接实现的需求,就像支付宝的支付密码输入框,在一排方格区域内输入并显示密文密码,每个密文字符之间又有竖线分隔。为直观理解支付密码输入框的业务需求,下面还是先看看该输入框的最终效果图。

    03
    领券