android 控件移动方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 控件移动方法相关的知识,希望对你有一定的参考价值。

1. 使用控件的layout 方法。

可以改任意位置和大小,不受布局限制。 但是在使用 setText等方法之后,会导致 界面重新布局,控件会回到原来位置

[java] view plaincopyprint?
01.btnMove.layout(left, top, left + 80, top+50);
btnMove.layout(left, top, left + 80, top+50);

2. 使用控件的setLayoutParams 方法,改变布局参数。

很容易改大小,设置Height 和 Width 即可

改位置会受到布局限制。要改到任意位置的话,须将控件放置在 FrameLayout 中,并设置 android:layout_gravity="top"

[java] view plaincopyprint?
01.int left = btnMoveLayoutB.getLeft() + 50;
02.int top = btnMoveLayoutB.getTop() + 120;
03.
04.FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)btnMoveLayoutB.getLayoutParams();
05.params.setMargins(left, top, 3, 3);//改变位置
06.btnMoveLayoutB.setLayoutParams(params);
参考技术A Android控件位置都是自己设置的。
如果要控件放到任意位置,建议用RelativeLayout(相对布局)
然后给控件添加属性,把控件放到想要的位置
下面是相对布局中 控件能用到的属性。
属性值为true可false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
属性值必须为id的引用名
android:layout_below 在某元素的下方
android:layout_above 在某元素的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素右边缘对齐
属性值为具体的像素值班,如30dp
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的的距离
android:layout_marginRight 离某元素的右边缘的距离
android:layout_marginTop 离某元素上边缘的距离

移动开发技术(Android)——实验3 Android常用基本控件

移动开发技术(Android)——实验3 Android常用基本控件(一)

一、实验目的

  1. 掌握在XML文件中添加控件的语法格式;
  2. 掌握控件的常用通用属性;
  3. 掌握Java代码中获取控件的方法;
  4. 熟悉文本框、编辑框、普通按钮和图片按钮的常用属性和方法。
  5. 掌握Button和ImageButton点击事件实现的几种方式。
  6. 熟悉Toast的使用。

二、实验内容

1.信息登记

创建一个Android项目,项目名称为“shiyan0301_信息登记_学生姓名”,要求:

  • 界面构成:7个文本框分别用于显示学生学号、姓名、性别,出生年月、专业班级、电子邮箱和登记信息;6个编辑框,分别用于输入学生学号、姓名、性别,出生年月、专业班级、电子邮箱;两个普通按钮“登记”和“重置”。
  • 程序功能
    ①单击“登记”按钮时,将用户输入的信息显示在一个登记信息文本框中;
    ②单击“重置”按钮时,清空编辑框中输入的信息。
布局xml代码.......................................

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:columnCount="3">

    <TextView
        android:id="@+id/num_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="学号" />
    <EditText 
        android:id="@+id/num_ET"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/name_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名" />
    <EditText 
        android:id="@+id/name_ET"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/sex_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="性别" />
    <EditText 
        android:id="@+id/sex_EV"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/birthday_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="出生年月" />
    <EditText 
        android:id="@+id/birthday_EV"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/class_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="专业班级" />
    <EditText 
        android:id="@+id/class_EV"
       android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/mail_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="电子邮箱" />
    <EditText 
        android:id="@+id/mail_EV"
        android:layout_columnSpan="2"
        android:autoLink="email"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/information_TV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="登记信息" />
    <EditText 
        android:id="@+id/information_EV"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_height="wrap_content"/>
    <Button 
        android:id="@+id/register_BT"
        android:text="登记"
        android:layout_width="wrap_content"/>
    <Button 
        android:id="@+id/request_BT"
        android:text="重置"
        android:layout_width="wrap_content"/>
</GridLayout>
JAVA代码.......................................

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

	EditText num,name,sex,birthday,department,mail,information;
	Button register,request;
	String String_num,String_name,String_sex,String_birthday,String_department,String_mail,String_information;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		num=(EditText) findViewById(R.id.num_ET);
		name=(EditText) findViewById(R.id.name_ET);
		sex=(EditText) findViewById(R.id.sex_EV);
		birthday=(EditText) findViewById(R.id.birthday_EV);
		department=(EditText) findViewById(R.id.class_EV);
		mail=(EditText) findViewById(R.id.mail_EV);
		information=(EditText) findViewById(R.id.information_EV);

		register=(Button) findViewById(R.id.register_BT);
		request=(Button) findViewById(R.id.request_BT);

		register.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String_num=num.getText().toString();
				String_name=name.getText().toString();
				String_sex=sex.getText().toString();
				String_birthday=birthday.getText().toString();
				String_department=department.getText().toString();
				String_mail=mail.getText().toString();

				information.setText(String_num+" "+String_name+" "+String_sex+" "+String_birthday+" "+String_department+" "+String_mail);
			}
		});


		request.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				num.setText("");
				name.setText("");
				sex.setText("");
				birthday.setText("");
				department.setText("");
				mail.setText("");
				information.setText("");
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

2.用户登录

创建一个Android项目,项目名称为“shiyan0302_用户登录_学生姓名”,要求:

  • 界面构成:2个文本框,分别用来显示“用户名:”、“密码:”;2个编辑框,分别用来输入用户名和密码信息,要求密码不能以明文方式显示;1个普通按钮“登录”。
  • 程序功能:单击“登录”按钮时,应实现以下功能:
    ①判断用户名和密码输入不为空,若为空,则给出Toast提示信息;
    ②若用户名为学生自己的姓名,且密码为学生学号,则给出Toast提示信息“登录成功!”
    ③若用户名不是学生自己的姓名,或密码不是学生自己的学号,则给出Toast提示信息“用户名或密码错误”,并将编辑框清空。
    ④若输入错误次数超过3次,则退出程序。(提示,使用finish()方法)
布局xml代码.......................................

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill"
    android:columnCount="2"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:stretchColumns="1"
    tools:context=".MainActivity" >

    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名" />
        <EditText
            android:id="@+id/userName_ET"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </TableRow>

    <TableRow>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密    码" />
        <EditText
            android:id="@+id/passWord_ET"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword" />
    </TableRow>

    <Button
        android:id="@+id/login_BT"
        android:text="登录" />

    <TextView
        android:text="用户名:180000,密码:0302"
        android:textSize="20sp" />

</TableLayout>
JAVA代码.......................................

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	EditText userName,passWord;
	Button login;
	String userName_St,passWord_St;
	int num=0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		userName=(EditText) findViewById(R.id.userName_ET);
		passWord=(EditText) findViewById(R.id.passWord_ET);
		login=(Button) findViewById(R.id.login_BT);

		login.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				num++;
				userName_St=userName以上是关于android 控件移动方法的主要内容,如果未能解决你的问题,请参考以下文章

android控件随手势旋转

android手势如何平移控件

android 怎么实现沿控件方向做位移动画

Android 布局编辑器缺少上下控件

WPF控件动态移动问题

android怎么移动canvas