Articles of layoutparams

android:使用LayoutParams在按钮之间设置边距

我想垂直自动生成按钮,按钮之间的底边距为20px。 我尝试使用LayoutParams对象设置边距,但没有成功。 @Override public void onCreate(Bundle savedInstanceState) { … for (Region region : regionsList) { //create new button Button button = new Button(mContext); //set infos int id = Integer.parseInt(Long.toString((Long) region.getId())); button.setId(id); button.setText(region.getName() + “( ” + region.getStores_nb() + ” )”); //Layoutparams setting FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); params.setMargins(0, 0, 0, 20); button.setLayoutParams(params); myLinear.addView(button); } […]

如何使用layout_weight获取LinearLayout的高度(以像素为单位)

这是我的第一篇文章。 我正在学习用java代码安装Android应用程序。 我正在使用一个LinearLayout“variables名为:ll”与预定义的layout_weight(我想在将来随时更改)并将高度和宽度设置为MATCH_PARENT。 我想以像素为单位获得此LinearLayout的高度。 我使用java(ll.addView(variableForAnObject);)填充它。 我试图使用ll.getLayoutParams()。height获得它的高度; 但我得到了-1。 因为我相信这是MATCH_PARENT的常量。 将高度设置为0dp会使ll不可见,并将高度设置为0。 请告诉我是否有办法达到它的高度。 我想我可以通过使用DisplayMetrics获取屏幕高度并进行几乎不可能的计算(至少对我而言)来做到这一点,但这太复杂了。

如何将填充或边距设置为线性布局?

我有一个线性布局 当我设定条件 if (constant.getscreenresolution() >= 800) { //i want to make it height * 2 } 那么如何设置layout params ?

在Android 4.4(KitKat)中叠加全屏透明图层

我想在整个屏幕上叠加透明视图,包括Android 4.4中最底部的导航栏。 我可以在Android 4.3中通过将窗口管理器LayoutParams定义为TYPE_SYSTEM_OVERLAY来实现,但是当我使用相同的定义时,布局现在被推到导航栏后面。 如果由于KitKat最近的更新,请你告诉我吗? 或者如果有人有解决方案,请与我分享。 问候

view.getLayoutParams()。宽度不适用于nougat

我编写了代码来动态设置视图的高度和宽度 view.getLayoutParams().width = 120; view.getLayoutParams().height = 120; 它与下面的牛轧糖设备完美配合,但是用牛轧糖它不起作用。 它只是将高度和宽度设为0.牛轧糖更新后的任何变化? 更新: 但是它有效 1)当我在设置高度和宽度后使用view.requestLayout() 2) view.setLayoutParams(new LinearLayout.LayoutParams(200, 120)); 那么为什么它在没有使用这两个选项的情况下使用pre nougat设备呢?

以编程方式设置Button的边距

我是android的新手并且陷入了一个非常基本的问题。我正在开发一个应用程序,我需要在fling上刷图像。在每个图像上我都要动态添加按钮。我使用AddContentView()添加按钮来添加按钮。一切都运行正常,但我想动态设置按钮的位置。我已经在很多地方读过,每个人都在使用addView()来添加按钮并设置它们的位置。我试过这个 但它没有工作。任何人都可以告诉我如何使用addContentView()设置按钮的边距(位置)。任何帮助将非常感激。

为什么9-patch图形大小在模拟器中正确但在手机上没有?

我有一个具有9补丁背景图像的RelativeLayout。 图像是一个简单的语音气泡,底部中间有一个完美居中的“箭头”。 RelativeLayout被充气并放置在MapView上。 使用模拟器,可以轻松地将语音气泡指向某个位置并扩展到其内容(文本,图像或两者)。 但是,当我在手机上运行我的应用程序时,9补丁无法正常伸展。 语音气泡的“箭头”将向左偏移一个非常明显的数量。 我主要测试的是Nexus S,还有三星Captivate和Nexus One。 针对SDK 7.针对SDK 7+的经过测试的模拟器。 只有硬件设备似乎有这个问题。

Android WindowManager TYPE_SYSTEM_ALERT触摸布局

我的应用程序在特定时间向用户显示一个按钮TYPE_SYSTEM_ALERT,我试图让用户移动它。 触摸和移动操作会在下面的代码中注册,但按钮不会移动。 我错过了什么? //create button mbtRec = new Button(ACR.getContext()); mbtRec.setText(R.string.start_recording); mbtRec.setTypeface(null, Typeface.BOLD); mbtRec.setBackgroundColor(Color.RED); //mbtRec.setBackgroundResource(R.drawable.ic_launcher); mbtRec.setOnClickListener(recButtonOnClickListener); mbtRec.setOnTouchListener(recButtonOnTouchListener); //create layout params recButtonLayoutParams = new WindowManager.LayoutParams(); recButtonLayoutParams.flags = WindowManager.LayoutParams.FORMAT_CHANGED; //8 recButtonLayoutParams.format = PixelFormat.RGBA_8888; //PixelFormat.TRANSLUCENT recButtonLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; recButtonLayoutParams.gravity = Gravity.TOP | Gravity.CENTER; //51 recButtonLayoutParams.width = WindowManager.LayoutParams.FILL_PARENT; recButtonLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; paramWindowManager.addView(this.mbtRec, recButtonLayoutParams); OnTouchListener recButtonOnTouchListener = new View.OnTouchListener() { @TargetApi(Build.VERSION_CODES.FROYO) […]

以编程方式将余量设置为CardView

我在我的XML布局中有一个CardView ,我需要以编程方式设置边距(这是因为我不需要任何时间的边距。基于几个条件,我设置或删除边距)。 我是这样做的: CardView.LayoutParams layoutParams = (CardView.LayoutParams) myCardView.getLayoutParams(); layoutParams.setMargins(0, 0, SystemHelper.dpToPx(2), 0); myCardView.setLayoutParams(layoutParams); 这很好用。 它在我的CardView底部放了2dp边距。 但是,我在logcat中得到了这个: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams 所以我将CardView.LayoutParams更改为FrameLayout.LayoutParams ,如下所示: FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) myCardView.getLayoutParams(); layoutParams.setMargins(0, 0, SystemHelper.dpToPx(2), 0); myCardView.setLayoutParams(layoutParams); 然而,它仍然有效,但我得到与上面相同的错误。 所以我再次修改它以使用LinearLayout.LayoutParams 。 LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) myCardView.getLayoutParams(); layoutParams.setMargins(0, 0, SystemHelper.dpToPx(2), 0); myCardView.setLayoutParams(layoutParams); 当我这样做时,我没有得到错误,但它没有设置任何余量 。 我应该忽略错误吗? 这似乎不对。 编辑: 这是我在XML中的CardView : […]

Android:更改WindowManager添加的ViewParams of View

我有WindowManager管理的叠加View ,就像在这个问题中一样 。 简而言之,它看起来像这样: WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); my_view_layout_params = new WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT); wm.addView(my_view, my_view_layout_params); 它工作,但如果我需要更改布局参数,我需要删除视图并再次添加它,如下所示: wm.removeView(my_view); wm.addView(my_view, my_view_layout_params); 它看起来不是很漂亮。 我试图做my_view.setLayoutParams(my_view_layout_params) ,但不幸的是它不起作用。 我该怎么做?