absolutelayoutandroid绝对布局怎么设置组件间的距离

absolutelayout  时间:2021-06-29  阅读:()

如何对需要动态大小的空间上使用动态布局

你的问题应该是要动态生成空间吧。

下面的答案可以参考下。

首先要却这个界面的布局,是AbsoluteLayout,RelativeLayout还是其他,然后就可以再里面添加控件了: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //确定界面的布局 AbsoluteLayout abslayout=new AbsoluteLayout (this); setContentView(abslayout); //创建一个button按钮 Button btn1 = new Button(this); btn1.setText(”this is a button”); btn1.setId(1); //确定这个控件的大小和位置 AbsoluteLayout.LayoutParams lp1 = new AbsoluteLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0,100); abslayout.addView(btn1, lp1 ); } 一个界面可以布置一个布局,可以多个布局一起设计: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置界面的布局 RelativeLayout relativeLayout = new RelativeLayout(this); setContentView(relativeLayout); //添加一个AbsoluteLayout子布局,并给这个布局添加一个button AbsoluteLayout abslayout=new AbsoluteLayout (this); abslayout.setId(11); Button btn1 = new Button(this); btn1.setText(”this is a abslayout button”); btn1.setId(1); AbsoluteLayout.LayoutParams lp0 = new AbsoluteLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT,100,0); abslayout.addView(btn1, lp0 ); //将这个子布局添加到主布局中 RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp1.addRule(RelativeLayout.ALIGN_PARENT_TOP); lp1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); relativeLayout.addView(abslayout ,lp1); //再添加一个子布局 RelativeLayout relativeLayout1 = new RelativeLayout(this); Button btn2 = new Button(this); btn2.setText(”this is a relativeLayout1 button”); btn2.setId(2); RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp2.addRule(RelativeLayout.ALIGN_PARENT_TOP); lp2.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE); relativeLayout1.addView(btn2 ,lp2); //将这个布局添加到主布局中 RelativeLayout.LayoutParams lp11 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp11.addRule(RelativeLayout.BELOW ,11); relativeLayout.addView(relativeLayout1 ,lp11); }

如何利用Vaadin的Layout合理布局

Vaadin的Layout是一个布局功能很强大的类,拥有AbsoluteLayout,VerticalLayout,HorizontalLayout,GridLayout等很多的布局子类,今天我们以Vertical为例来讲解在布局中应该注意的问题: 例如,我们需要开发的界面如同最简单的“记事本”一样 那么,我们可以分析出,整个记事本应该有两个部分,一是具有固定高度的菜单栏,二是具有可以伸缩的内容空间,上下排布,因此我们利用VerticalLayout来设置这一布局,在Java中我们如此写到: 出现的效果如下,并非是我们想要的: 然后进行如下调整: 出现了我们想要的效果: 请特别注意以上的几条语句: layout.setSizeFull(); …… menuPanel.setHeight("32px"); …… contentPanel.setSizeFull(); …… layout.setExpandRatio(contentPanel, 1.0f);

android中有几种布局技术,各自优缺点

在4.0以前版本中一共有五种布局,都是ViewGroup的子类。

分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。

而TableLayout是LinearLayout的子类。

(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。

在2.2操作系统中将AbsoluteLayout过期。

而目前FrameLayout、TableLayout也逐渐少用。

在4.0之后又新增GridLayout。

(GridLayout最经典的案例是计算器界面) 总之,Android中一共有六种布局。

目前推荐使用RelativeLayout、LinearLayout、GridLayout三种布局。

一般简单的布局就用LinearLayout,复杂点的用RelativeLayout(可以防止多层嵌套),像FrameLayout,里面的控件是重叠的,AbsoluteLayout里面控件位置是绝对的,在屏幕适配方面就不行了。

dPad是什么意思?

dPad常见于各大安卓模拟器,相当于手机中的“上下左右中”五个按键(也可用于游戏手柄的按键)。

安卓模拟器是一款模拟软件。

它能在电脑上模拟安卓手机系统,并能安装、使用、卸载安卓应用软件,让你在电脑上也能体验操作安卓系统的全过程。

dPad是安卓模拟器可以模拟的一个功能 编写代码: [xhtml] view plaincopy <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFFFFF" > <Button android:id="@+id/myButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="move me" android:layout_x="20px" android:layout_y="40px" /> </AbsoluteLayout> activity代码: [java] view plaincopy .chenzheng_java; import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.KeyEvent; import android.widget.AbsoluteLayout; import android.widget.Button; import android.widget.Toast; /** * @description 控制手机的上下左右四个方向键 * @author chenzheng_java * */ public class DpadActivity extends Activity { Button button; DisplayMetrics metrics = new DisplayMetrics(); int screenx = 0 ;//屏幕宽度 int screeny = 0 ;//屏幕高度 int buttonWidth = 80;//按钮宽度 int buttonHeight = 40 ;// 按钮高度 int currentX = 0;// 按钮的当前x坐标 int currentY = 0;// 按钮的当前Y坐标 int step = 0;//移动时候的步长 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dpad); button = (Button) findViewById(R.id.myButton1); getWindowManager().getDefaultDisplay().getMetrics(metrics); screenx = metrics.widthPixels; screeny = metrics.heightPixels; /* buttonWidth = button.getWidth(); buttonHeight = button.getHeight();*/ currentX = (screenx-buttonWidth)/2; currentY = (screeny-buttonHeight)/2; step = 2; button.setLayoutParams(new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, currentX, currentY)); } /** * 当前后左右键被按下的时候,被触发(这里可是有前提的哦,那就是当前的activity中必须没有view正在监听按键 * ,例如:当前如果有一个EditText正在等待输入,当我们按下dpad时,不会触发事件哦) * Activity.onKeyDown(); 当某个键被按下时会触发,但不会被任何的该Activity内的任何view处理。

默认按下KEYCODE_BACK键后会回到上一个Activity。

*/ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_DOWN://按向下键 moveDown(); break; case KeyEvent.KEYCODE_DPAD_UP:// 按向上键 moveUp(); case KeyEvent.KEYCODE_DPAD_LEFT://按向左键 moveLeft(); case KeyEvent.KEYCODE_DPAD_RIGHT://按向右键 moveRight(); default: break; } return super.onKeyDown(keyCode, event); } @SuppressWarnings("deprecation") private void moveDown(){ int temp = currentY+step; if(temp>(screeny-buttonHeight)){ showToast("到头了哦!"); button.setLayoutParams(new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, screenx, screeny-buttonHeight)); } else{ currentY = currentY+step; AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, currentX, currentY); button.setLayoutParams(params); } //button.setLayoutParams(new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, currentX, currentY-2)); } @SuppressWarnings("deprecation") private void moveUp(){ int temp = currentY-step; if(temp<=0){ showToast("往上到头了哦!"); button.setLayoutParams(new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, screenx, 0)); } else{ currentY = currentY-step; AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, currentX, currentY); button.setLayoutParams(params); } } @SuppressWarnings("deprecation") private void moveLeft(){ int temp = currentX-step; if(temp<=0){ showToast("往左边到头了哦!"); button.setLayoutParams(new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, 0, screeny)); } else{ currentX = currentX-step; AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, currentX, currentY); button.setLayoutParams(params); } } @SuppressWarnings("deprecation") private void moveRight(){ int temp = currentX+step; if(temp>=(screenx-buttonWidth)){ showToast("往右边到头了哦!"); button.setLayoutParams(new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, screenx-buttonWidth, currentY)); } else{ currentX = currentX+step; AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(buttonWidth, buttonHeight, currentX, currentY); button.setLayoutParams(params); } } /** * 弹出提示信息 * @param text 提示信息 */ private void showToast(String text){ Toast.makeText(this, text, Toast.LENGTH_LONG).show();

Android中常用的五种布局?

Android 布局是应用界面开发的重要一环,在Android中,共有五种布局方式分别是: 线性布局:LinerLayout 表格布局:TableLayout 相对布局:RelativeLayout 绝对布局:AbsoluteLayout 帧布局:FrameLayout

android绝对布局怎么设置组件间的距离

在绝对布局AbsoluteLayout中: 子控件的位置可以通过android:layout_x="**px"android:layout_y="**px"进行绝对控制。

这里的px表示绝对的像素,所以至于组件之间的距离可以进行非常精确的控制。

也可以使用dip做单位,这个单位是按照屏幕密度进行计算的。

在相对布局RelativeLayout中: layout_marginBottom是指控件作为子控件和其他控件或者父控件边界的距离。

其中的Bottom可以换成Right,Left等方向。

综上,如果想用绝对布局实现组件距离,使用具体位置控制,但很多时候不见得能达到理想的效果,使用dip对不同设备显示效果不一样。

这个时候建议使用相对布局,能很方便的对位置进行控制。

如果一定要使用绝对布局,请使用布局嵌套,即一个布局包含多个布局的方式,或者使用帧布局进行布局覆盖显示,比如在一个帧布局中定义一个绝对布局和相对布局,后者覆盖前者。

PhotonVPS:美国Linux VPS半价促销2.5美元/月起,可选美国洛杉矶/达拉斯/芝加哥/阿什本等四机房

photonvps怎么样?photonvps现在针对旗下美国vps推出半价促销优惠活动,2.5美元/月起,免费10Gbps DDoS防御,Linux系统,机房可选美国洛杉矶、达拉斯、芝加哥、阿什本。以前觉得老牌商家PhotonVPS贵的朋友可以先入手一个月PhotonVPS美国Linux VPS试试了。PhotonVPS允许合法大人内容,支持支付宝、paypal和信用卡,30天退款保证。Photo...

ftlcloud(超云)9元/月,1G内存/1核/20g硬盘/10M带宽不限/10G防御,美国云服务器

ftlcloud怎么样?ftlcloud(超云)目前正在搞暑假促销,美国圣何塞数据中心的云服务器低至9元/月,系统盘与数据盘分离,支持Windows和Linux,免费防御CC攻击,自带10Gbps的DDoS防御。FTL-超云服务器的主要特色:稳定、安全、弹性、高性能的云端计算服务,快速部署,并且可根据业务需要扩展计算能力,按需付费,节约成本,提高资源的有效利用率。点击进入:ftlcloud官方网站...

香港E3-1230v2 16GB 30M 326元/月 数脉科技

官方网站:https://www.shuhost.com/公司名:LucidaCloud Limited尊敬的新老客户:艰难的2021年即将结束,年终辞旧迎新之际,我们准备了持续优惠、及首月优惠,为中小企业及个人客户降低IT业务成本。我们将持续努力提供给客户更好的品质与服务,在新的一年期待与您有美好的合作。# 下列价钱首月八折优惠码: 20211280OFF (每客户限用1次) * 自助购买可复制...

absolutelayout为你推荐
动态图片格式动态图片什么格式国家法规数据库食品及食用农产品标准法规信息支撑和综合应用平台/食品安全标准与技术法规动态比对数据库如何查询标准pat是什么格式pat是什么格式的文件啊databasenamefoxpro中的的命令格式java程序员招聘Java程序员,一般招聘都要求些啥网站客服代码如何将在线客服代码插入到您的网页中?动画分镜头脚本经典动画片分镜头脚本怎样删除聊天记录如何删除聊天particular教程AE的particular的particle设置flex是什么Adobe旗下的软件分别是干什么的?
免备案虚拟主机 备案未注册域名 godaddy域名解析教程 申请免费域名 中国万网域名 新秒杀 天猫双十一秒杀 win8.1企业版升级win10 lighttpd me空间社区 网站木马检测工具 cdn加速原理 什么是服务器托管 联通网站 服务器托管价格 godaddyssl windowsserver2008 asp简介 studentmain 跟踪路由 更多