栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

android用java动态增添删除修改布局

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android用java动态增添删除修改布局

XML对开发者来说十分的方便,不仅使用起来简单,而且能够及时调试,修改界面之后马上能看到效果。
Java设置布局不具有这个优势。但是java却可以动态对布局进行操作,这是xml所做不到的。笔者认为,新手索要掌握的java动态设置布局主要有两点,一方面是对布局的属性进行修改,另一方面是增添和删除控件。

首先说一下动态设置布局在项目中的应用,拿高德地图举个例子,如下图:

 

我们可以看到,高德地图的默认界面与点击地图之后的界面是不一样的,上面同样的控件在layout中的位置也不一样,这个用xml便是难以实现的了,于是java动态设置布局便有了其重要性。

接下来看一下分享的demo效果:

代码其实比较容易理解,具体的解释已经注释在代码中了,读者可以自己写了理解一下。
MainActivity:

package com.example.activeuitest; 
 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.RadioGroup; 
import android.widget.RelativeLayout; 
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 
 
  private Button BT_Gone;//让布局隐藏 
  private Button BT_Visiable;//让布局显示 
  private Button BT_Add;//增添布局 
  private Button BT_Delete;//删除布局 
 
  private RelativeLayout RL_main; 
  private RadioGroup RL_RadioGroup; 
  private RelativeLayout RL_InfoTip; 
  private LinearLayout LL_test; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
 
    init();//初始化 
  } 
 
  private void init() { 
    BT_Gone= (Button) findViewById(R.id.button1); 
    BT_Visiable= (Button) findViewById(R.id.button2); 
    BT_Add= (Button) findViewById(R.id.button3); 
    BT_Delete= (Button) findViewById(R.id.button4); 
 
    RL_main=(RelativeLayout)findViewById(R.id.main_layout); 
    RL_RadioGroup=(RadioGroup)findViewById(R.id.radio_group); 
    RL_InfoTip=(RelativeLayout)findViewById(R.id.info_tip); 
 
    //此处要获取其他xml的控件需要先引入改layout的view(这个linearlayout用于演示添加和删除) 
    View view= LayoutInflater.from(this).inflate(R.layout.test_linear_layout,null,false ); 
    LL_test=(LinearLayout)view.findViewById(R.id.test_layout); 
 
    BT_Gone.setonClickListener(this); 
    BT_Visiable.setonClickListener(this); 
    BT_Add.setonClickListener(this); 
    BT_Delete.setonClickListener(this); 
  } 
 
  @Override 
  public void onClick(View v) { 
    switch(v.getId()){ 
      case R.id.button1: 
 RL_InfoTip.setVisibility(View.GONE);//底部tip设置不可见 
 //初始化宽高属性 
 RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams( 
     ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
 lp1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);//设置置底 
 lp1.setMargins(10, 0, 0, 10);//设置margin,此处单位为px 
 RL_RadioGroup.setLayoutParams(lp1);//动态改变布局 
 break; 
      case R.id.button2: 
 RL_InfoTip.setVisibility(View.VISIBLE);//底部tip设置可见 
 //初始化宽高属性 
 RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams( 
     ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
 lp2.setMargins(10, 0, 0, 10);//设置margin,此处单位为px 
 lp2.addRule(RelativeLayout.ABOVE, R.id.info_tip);//设置above,让控件于R.id.info_tip之上 
 RL_RadioGroup.setLayoutParams(lp2);//动态改变布局 
 break; 
      case R.id.button3: 
 //初始化宽高属性,此处单位为px 
 RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(200, 200); 
 lp3.addRule(RelativeLayout.BELOW, R.id.button4);//设置below,让控件于R.id.button4之下 
 RL_main.addView(LL_test, lp3);//动态改变布局 
 LL_test.setVisibility(View.VISIBLE);//此处需要设置布局显示,否则会不显示 
 break; 
      case R.id.button4: 
 RL_main.removeView(LL_test);//动态改变布局 
 break; 
    } 
  } 
} 

activity_main:

 
 
 
 
  

test_linear_layout:

 
 
 
 

以上就是本文的全部内容,希望对大家的学习有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/162911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号