android學習五(android中基本控件的使用)

前面已經學瞭activity的一些使用,那麼下面我們進行android中基本的控件的學習和使用。

1.android中的TextView控件

新建一個項目,項目名為UITest,才有默認的設置,修改佈局文件的內容,如下:


    


運行程序如下:

下面我們來說說每個參數的意義:

android:id=”@+id/text_view”:給當前的控件定義瞭唯一標志符

android:layout_width:指定控件的寬度

android:layout_height:指定的控件的高度

android中所有的控件都具有android:layout_width,android:layout_height這兩個屬性,可選的值有match_parent,fill_parent,wrap_content,其中match_parent和fill_parent的意義一樣,現在官方推薦用match_parent,表示當前控件和父佈局的大小一樣,也就是有父佈局來決定當前控件的大小。wrap_content表示擋墻控件的大小能夠剛好包含住裡面的內容,也就是控件內容決定當前控件的大小。所以上面的佈局中讓TextView的寬度和父佈局一樣,也就是手機的寬度,讓TextView的高度足夠包含住裡面的內容就行。

android:text:指定TextView顯示的內容,TextView默認的文字對齊方式是居左上角對齊。

下面我們修改下文字的對齊方式,給TextView添加一個android:gravity=”center”屬性,在運行程序

使用android:gravity來指定文字的對齊方式,可選的值有top,bottom,left,right,center等或者用“””來同時指定多個值,這裡我們指定的“center”,效果等效於center_vertical|center_horizontal,表示文字在垂直和水平方向都居中對齊。

下面我們在修改下文字的大小和顏色,並修改TextView的背景顏色


效果圖如上

android:textSize=”24sp”:指定文字的大小

android:textColor=”#00ff00″:指定文字的顏色,顏色為綠色

android:background=”#ff0000″:指定TextView的背景色為紅色

關於TextView的基本屬性就介紹到這吧,android很多的控件屬性都相似的,舉一反三。下面我們來學習Button吧。

2.android中的Button

改寫佈局文件代碼如下:


    
   
    

運行程序如下:

我們在MainActivity中為按鈕添加事件監聽vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ==”brush:java;”>package com.wj.uitest;

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

public class MainActivity extends Activity {

private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button1=(Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//添加事件處理邏輯
}

});

}

@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;
}

}

或者通過實現接口來給按鈕添加監聽代碼如下:

package com.wj.uitest;

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

public class MainActivity extends Activity  implements OnClickListener{

	private Button button1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			break;
		default:
			break;
		}
	}

}


上面2中方法都可以實現對android的事件監聽,具體使用什麼,看你自己的愛好

3.Android中的EditText

修改佈局文件添加EditText控件


    
   
    

運行程序

下面我們在給EditText添加提示文字,修改佈局文件


運行程序:

android:hint:屬性是給EditText提供輸入提示的文字

下面我們使用一個android:maxLines屬性,使用android:maxLines指定最多顯示的行數,當超過瞭指定的行數,文本就會向上滾動。修改下EditText的代碼:


運行程序:

下面我們演示通過點擊按鈕獲取輸入的EditText的內容,

修改MainActivity裡面的代碼,代碼如下:

package com.wj.uitest;

import android.app.Activity;
import android.os.Bundle;
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  implements OnClickListener{

	private Button button1;
	private EditText editText;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		editText=(EditText) findViewById(R.id.edit_text);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			String text=editText.getText().toString();
			Toast.makeText(MainActivity.this, text, 
					Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
	}

}

在文本框輸入,內容後,通過點擊按鈕,來顯示輸入的內容,運行程序操作結果如下:

代碼中editText.getText().toString()是通過點擊按鈕來獲取輸入文本框的內容,並轉換成字符串。最後用Toast把輸入的字符串顯示出來。

4.Android的ImageView

android之中用來顯示一張圖片的是ImageView 控件,下面我就借助ImageView 來顯示一張圖片,首先我在我的drawable文件夾下面添加瞭2張圖片。接著修改佈局文件,添加圖片的控件。


    
   
    

運行程序:

可見上面已經顯示瞭一張圖片瞭,由於不知道圖片的大小,所以把ImageView控件設置成隨圖片的大小自動的變化。

android:src="@drawable/note1",這一句是給ImageView控件指定一張圖片。

下面我在修改下代碼,通過點擊按鈕,改變下圖片,修改代碼如下:

package com.wj.uitest;

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

public class MainActivity extends Activity  implements OnClickListener{

	private Button button1;
	private EditText editText;
	private ImageView imageView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		editText=(EditText) findViewById(R.id.edit_text);
		imageView=(ImageView) findViewById(R.id.image_view);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			/*String text=editText.getText().toString();
			Toast.makeText(MainActivity.this, text, 
					Toast.LENGTH_SHORT).show();*/
			//通過ImageView的setImageResource函數改變顯示的圖片
			imageView.setImageResource(R.drawable.note2);
			break;
		default:
			break;
		}
	}

}

沒有點擊按鈕前,圖片顯示和上面一張圖片一樣,當點擊按鈕以後,顯示如下:

5.Android中的ProgressBar

ProgressBar用於在界面上顯示一個進步條,表示我們的程序正在加載一些數據。下面是添加ProgressBar控件的代碼,我把ProgressBar的背景色指定為藍色瞭。修改佈局代碼如下:


    
   
    

運行程序結果如下:

我們看到屏幕中有一個圓形的進度條正在旋轉,如上。

由於數據總有加載完的時候,所以進度條不能一直顯示,這時候我們就要用到Android控件的可見屬性瞭,可選的值有visible,invisible和gone。visible表示控件是可見的,這個值是默認的值,不指定android:visibility時,控件是可見的。invisible表示控件不可見,但是它仍然占據著原來的位置和大小,可以理解為控件變成瞭透明狀態。gone則表示控件不僅不可見,而且不在占用任何屏幕空間。我們還可以通過代碼來設置控件的可見性,使用的是setVisibility方法,可以傳入的View.VISIBLE,View.INVISIBLE,View.GONE。

下面我通過點擊下按鈕讓進度條消失,在點擊下按鈕,則顯示進度條。修改代碼如下:

package com.wj.uitest;

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

public class MainActivity extends Activity  implements OnClickListener{

	private Button button1;
	private EditText editText;
	private ImageView imageView;
	private ProgressBar progressBar;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		editText=(EditText) findViewById(R.id.edit_text);
		imageView=(ImageView) findViewById(R.id.image_view);
		progressBar=(ProgressBar) findViewById(R.id.progress_bar);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			/*String text=editText.getText().toString();
			Toast.makeText(MainActivity.this, text, 
					Toast.LENGTH_SHORT).show();*/
			
			
			//通過ImageView的setImageResource函數改變顯示的圖片
			/*imageView.setImageResource(R.drawable.note2);*/
			
			//控制進度條的顯示和消失
			if(progressBar.getVisibility()==View.GONE){
				//getVisibility()方法獲取進度條的顯示狀態
				progressBar.setVisibility(View.VISIBLE);
			}else{
				progressBar.setVisibility(View.GONE);
			}
			
			
			break;
		default:
			break;
		}
	}

}

運行程序,如下:

點擊按鈕後,程序顯示如下:

另外進度條有不同的顯示樣式,剛剛顯示的是圓形的進度條,通過style屬性可以將它變成水平的進度條,修改佈局文件如下:


    

運行程序如下:

下面我添加代碼,使通過點擊按鈕,進度條進行增長,修改代碼如下:

package com.wj.uitest;

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

public class MainActivity extends Activity  implements OnClickListener{

	private Button button1;
	private EditText editText;
	private ImageView imageView;
	private ProgressBar progressBar;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		editText=(EditText) findViewById(R.id.edit_text);
		imageView=(ImageView) findViewById(R.id.image_view);
		progressBar=(ProgressBar) findViewById(R.id.progress_bar);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			/*String text=editText.getText().toString();
			Toast.makeText(MainActivity.this, text, 
					Toast.LENGTH_SHORT).show();*/
			
			
			//通過ImageView的setImageResource函數改變顯示的圖片
			/*imageView.setImageResource(R.drawable.note2);*/
			
			//控制進度條的顯示和消失
			/*if(progressBar.getVisibility()==View.GONE){
				//getVisibility()方法獲取進度條的顯示狀態
				progressBar.setVisibility(View.VISIBLE);
			}else{
				progressBar.setVisibility(View.GONE);
			}*/
			
			//點擊按鈕,增加進度條的進度
			int progress=progressBar.getProgress();
			progress=progress+10;
			progressBar.setProgress(progress);
			
			
			
			break;
		default:
			break;
		}
	}

}

運行程序,點擊按鈕,顯示如下:

觀看圖,可以看到進度條有進度顯示瞭,顯示的是藍色部分。每點擊一下按鈕進度增加值為10。ProgressBar還有幾種樣式可以自己試試。

6.Android的AlertDialog

android的AlertDialog的使用,可以直接看代碼,比較的簡單,我就直接貼代碼瞭

package com.wj.uitest;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity  implements OnClickListener{

	private Button button1;
	private EditText editText;
	private ImageView imageView;
	private ProgressBar progressBar;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		editText=(EditText) findViewById(R.id.edit_text);
		imageView=(ImageView) findViewById(R.id.image_view);
		progressBar=(ProgressBar) findViewById(R.id.progress_bar);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			/*String text=editText.getText().toString();
			Toast.makeText(MainActivity.this, text, 
					Toast.LENGTH_SHORT).show();*/
			
			
			//通過ImageView的setImageResource函數改變顯示的圖片
			/*imageView.setImageResource(R.drawable.note2);*/
			
			//控制進度條的顯示和消失
			/*if(progressBar.getVisibility()==View.GONE){
				//getVisibility()方法獲取進度條的顯示狀態
				progressBar.setVisibility(View.VISIBLE);
			}else{
				progressBar.setVisibility(View.GONE);
			}*/
			
			//點擊按鈕,增加進度條的進度
			/*int progress=progressBar.getProgress();//獲取到當前進度條的進度
			progress=progress+10;
			progressBar.setProgress(progress);*/
			
			/*
			 * AlertDialog可以在當前的界面彈出一個對話框,這個對話框是置與所有界面元素之上的,能夠
			 * 屏蔽掉其他控件的交互能力,因此一般AlertDialog都用於提示一些非常重要的內容或者警告信息
			 * */
			AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
			dialog.setTitle("this is dialog");//對話框標題
			dialog.setMessage("Something import.");//設置提示信息
			dialog.setCancelable(false);
			//為對話框設置確定按鈕的點擊事件
			dialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){

				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					//進行邏輯處理
				}
			});
			//為對話框設置取消按鈕的點擊事件
			dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){

				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					//進行邏輯處理
				}
				
			});
			//顯示對話框
			dialog.show();
			break;
		default:
			break;
		}
	}

}

運行程序,點擊按鈕後,結果如下所示:

7.Android中的ProgressDialog

ProgressDialog和上面的對話框用法差不多,所以也不多講瞭,具體的在代碼裡面寫瞭註釋瞭,可以查看註釋。修改代碼如下:

package com.wj.uitest;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;

public class MainActivity extends Activity  implements OnClickListener{

	private Button button1;
	private EditText editText;
	private ImageView imageView;
	private ProgressBar progressBar;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1=(Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		editText=(EditText) findViewById(R.id.edit_text);
		imageView=(ImageView) findViewById(R.id.image_view);
		progressBar=(ProgressBar) findViewById(R.id.progress_bar);
		/*button1.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//添加事件處理邏輯
			}
			
		});*/
		
	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.button1:
			//在此處添加事件處理邏輯
			/*String text=editText.getText().toString();
			Toast.makeText(MainActivity.this, text, 
					Toast.LENGTH_SHORT).show();*/
			
			
			//通過ImageView的setImageResource函數改變顯示的圖片
			/*imageView.setImageResource(R.drawable.note2);*/
			
			//控制進度條的顯示和消失
			/*if(progressBar.getVisibility()==View.GONE){
				//getVisibility()方法獲取進度條的顯示狀態
				progressBar.setVisibility(View.VISIBLE);
			}else{
				progressBar.setVisibility(View.GONE);
			}*/
			
			//點擊按鈕,增加進度條的進度
			/*int progress=progressBar.getProgress();//獲取到當前進度條的進度
			progress=progress+10;
			progressBar.setProgress(progress);*/
			
			/*
			 * AlertDialog可以在當前的界面彈出一個對話框,這個對話框是置與所有界面元素之上的,能夠
			 * 屏蔽掉其他控件的交互能力,因此一般AlertDialog都用於提示一些非常重要的內容或者警告信息
			 * */
			/*AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
			dialog.setTitle("this is dialog");//對話框標題
			dialog.setMessage("Something import.");//設置提示信息
			dialog.setCancelable(false);
			//為對話框設置確定按鈕的點擊事件
			dialog.setPositiveButton("OK", new DialogInterface.OnClickListener(){

				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					//進行邏輯處理
				}
			});
			//為對話框設置取消按鈕的點擊事件
			dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){

				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					//進行邏輯處理
				}
				
			});
			//顯示對話框
			dialog.show();*/
			
			
			
			/*
			 * ProgressDialog和AlertDialog有點類似,都是可以在界面彈出一個對話框,都能夠屏蔽
			 * 掉其他控件的交互能力。不同的是,ProgressDialog會在對話框中顯示一個進度條,一般是用於
			 *表示當前操作比較耗時,讓用戶耐心等待。
			 * */
			//創建組件
			ProgressDialog progressDialog=new ProgressDialog(MainActivity.this);
			//設置標題
			progressDialog.setTitle("this is progressDialog");
			//設置提示內容
			progressDialog.setMessage("Loading....");
			//setCancelable方法如果傳入的false,表示ProgressDialog是不能通過back鍵取消掉的,
			//這時你就要在代碼中做好控制,當數據加載完後必須要調用ProgressDialog的dismiss()方法來關閉
			//對話框,否則ProgressDialog將會一直存在
			progressDialog.setCancelable(true);
			//進行顯示
			progressDialog.show();
			
			
			
			
			
			break;
		default:
			break;
		}
	}

}

運行程序後結果如下:

基本的控件的使用就總結到這裡瞭,下面會講解下android中的佈局

轉載請註明來至:https://blog.csdn.net/j903829182/article/details/40660275

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。