当前位置: 代码迷 >> Android >> Android 动态增加按钮 处于textview右侧
  详细解决方案

Android 动态增加按钮 处于textview右侧

热度:55   发布时间:2016-04-27 23:44:32.0
Android 动态增加按钮 居于textview右侧

       之前的项目在推进,遇到一个问题是这样的:利用popwindow制作的菜单,切换不同的界面,总共有10个菜单,几乎标题都是一样的,只不过标题不一样,现在遇到有一个界面要求中间的标题右侧要要加一个按钮,能够点击跳转到另外一个界面,要解决的问题是如何动态在标题右侧生成按钮,并适配各种型号手机:

      解决方案1:使用

<pre name="code" class="java">                RelativeLayout  <span style="font-family: Arial, Helvetica, sans-serif;">ll = (RelativeLayout) findViewById(R.id.main_toolbar);//要添加标题的布局,得到布局id之后,在进行按钮的添加</span>
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(62, 62);layoutParams.leftMargin=430;//设置里屏幕左侧的按钮距离,刚好在标题的右侧layoutParams.topMargin=10;//离上部的距离// 将挂单加号按钮 加入到LinearLayout 中,添加监听事件b1 = new Button(getBaseContext());b1.setMinHeight(32);b1.setMinWidth(32);b1.setBackgroundResource(R.drawable.add);b1.setOnClickListener(new OnClickListener() [email protected] void onClick(View v) {Toast.makeText(getBaseContext(), "该功能后续添加,别心急",Toast.LENGTH_SHORT).show();}});ll.addView(b1,layoutParams);

       这样的方案其实按钮里屏幕的间距是写死了的,在两个真机红米和htc测试是刚好在标题右侧,不过在华为的机子上就会显示不正常,显然这种固定距离的做法是不可取的。我试着找到标题的id,设置按钮刚好在标题的右侧一点点位置,尝试使用下列语句:

 

 //定义一个RelativeLayout组件         RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);         //与父组件顶部对齐         lp1.addRule(RelativeLayout.ALIGN_WITH_PARENT_RIGHT);         //横向居中,是         lp1.addRule(RelativeLayout.CENTER_HORIZONTAL, true);         // btn1 位于父 View 的顶部,在父 View 中水平居中         rl.addView(btn1, lp1 );  
     上机测试了,根本没有用,新增的按钮老是在屏幕的最右侧,不知道其他人有没有好的办法可以交流。


      解决方案2: 直接在界面上xml文件就写上按钮的控件,然后在代码中动态隐藏和显示,这样的做法是不用担心手机的适配问题,方案如下:

       在界面上很简单,通过相对布局,先确定好位置:

<Button            android:id="@+id/addorder"            android:layout_width="30dp"            android:layout_height="30dp"            android:layout_centerVertical="true"            android:layout_marginRight="90dp"            android:layout_toLeftOf="@+id/menu_person"            android:background="@drawable/add" />

   在代码层面也很简单,使用如下代码对按钮显示和隐藏进行控制:

private void initaddmenu(){				ll = (RelativeLayout) findViewById(R.id.main_toolbar);        <span style="font-size:24px;color:#cc0000;">b1.setVisibility(View.VISIBLE);//使按钮可见</span>		b1.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				Toast.makeText(getBaseContext(), "该功能后续添加,别心急",						Toast.LENGTH_SHORT).show();			}		});	}		/*	 * qiulinhe: 2015年7月29日14:01:49: 切换界面,删掉+号按钮	 */	private void deleteAddMenu(){		<span style="font-size:24px;color:#ff0000;">b1.setVisibility(View.GONE);//隐藏按钮</span>	}


版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案