Android添加button並響應


1.首先要在activity_main.xml文件里新建兩個button標簽。

  

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.fate.testproject.MainActivity" >
11 
12     <TextView
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:text="@string/total" 
16         android:textSize="45sp"
17         android:layout_gravity="center" 
18         android:gravity="center"
19         android:id="@+id/tvTotal"
20         />
21     
22     <Button
23         android:layout_width="250sp"
24         android:layout_height="wrap_content"
25         android:text="@string/addOne"
26         android:layout_gravity="center"
27         android:textSize="20sp"
28         android:id="@+id/bAddOne"
29         />
30     <Button 
31         android:layout_width="250sp"
32         android:layout_height="wrap_content"
33         android:text="@string/subOne"
34         android:layout_gravity="center"
35         android:textSize="20sp"
36         android:id="@+id/bSubOne"
37         />
38 
39 
40 </LinearLayout>

這里出現了幾個問題。

  1)布局問題:我現在用的Android環境是最新的,新建工程下activity_main.xml文件自帶布局並非LinearLayout線性布局。之前對照書上的內容跟網上視頻教程總感覺不對勁。之后,改成了LinearLayout線性布局之后,又發現幾個控件擠成一橫排,控件甚至被擠出視圖外面。原來線性布局默認的是橫向的,不是我們所認為的豎向。這里添加一句

android:orientation="vertical",所有空間依次豎向排列。
  2)硬性編碼問題:在定義控件的寬度(width)和高度(height)的時候我使用了數值。一般人現在都知道如果用像素dx作為單位來定義控件的寬和高會出現warning的黃色警告。但是我在使用dp作為單位的時候也出現了warning,最后在提示下使用的是sp。還有,在定義Android:text的時候,不引用string下的元素而直接輸入內容也會出現warning警告。這種硬性編碼引起warning警告一般不會導致整個程序出錯,但是良好的習慣和編程思路會減少出錯的概率。
  3)我在設置id的時候出現了個小毛病,寫錯了,將android:id="@+id/bSubOne"寫成了android:id="@id/bSubOne"少了一個+號,導致程序完全運行不了,出現紅色警報。千萬細心。

2.其次在resources下的string.xml文件里添加元素
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3 
 4     <string name="app_name">TestProject</string>
 5     <string name="hello_world">Hello world!</string>
 6     <string name="action_settings">Settings</string>
 7     <string name="total">總數為:0</string>
 8     <string name="subOne">數值減一</string>
 9     <string name="addOne">數值加一</string>
10 
11 </resources>

將button的部分信息在這里添加,更加方便修改和管理。如果需要使用,直接引用。

3.在MainActivity函數中添加響應函數

 1 package com.fate.testproject;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.Menu;
 6 import android.view.MenuItem;
 7 import android.view.View;
 8 import android.widget.Button;
 9 import android.widget.TextView;
10 
11 
12 public class MainActivity extends Activity {
13 
14     int counter;//創建int變量counter
15     Button mAddOne, mSubOne;//創建兩個button變量,分別是加一button和減一button
16     TextView mTotal;//創建TextView類型的變量mTotal
17     
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         
23         
24         //初始化變量的值
25         counter = 0;
26         
27         //關聯兩個button和TextView變量
28         mAddOne = (Button)findViewById(R.id.bAddOne);
29         mSubOne = (Button)findViewById(R.id.bSubOne);
30         mTotal = (TextView)findViewById(R.id.tvTotal);
31         
32         //添加按鈕單機響應函數
33         mAddOne.setOnClickListener(new View.OnClickListener() {
34             
35             @Override
36             public void onClick(View v) {
37                 // TODO Auto-generated method stub
38                 counter++;
39                 mTotal.setText("總數為:" + counter);
40             }
41         });
42         
43         mSubOne.setOnClickListener(new View.OnClickListener() {
44             
45             @Override
46             public void onClick(View v) {
47                 // TODO Auto-generated method stub
48                 counter--;
49                 mTotal.setText("總數為:" + counter);
50             }
51         });
52     }
53 
54 
55     @Override
56     public boolean onCreateOptionsMenu(Menu menu) {
57         // Inflate the menu; this adds items to the action bar if it is present.
58         getMenuInflater().inflate(R.menu.main, menu);
59         return true;
60     }
61 
62     @Override
63     public boolean onOptionsItemSelected(MenuItem item) {
64         // Handle action bar item clicks here. The action bar will
65         // automatically handle clicks on the Home/Up button, so long
66         // as you specify a parent activity in AndroidManifest.xml.
67         int id = item.getItemId();
68         if (id == R.id.action_settings) {
69             return true;
70         }
71         return super.onOptionsItemSelected(item);
72     }
73 }

 

簡單的添加button只需要修改這三個工程下的文件就可以了。

這里我為了養成自己的習慣,讓我寫出來的代碼更具有易讀性。我在定義各個變量的時候是這樣的。

  1)遵循定義名有意義,基本代表控件的內容或含義,並且盡量使用英文代表其含義。如:加一我會定義成addone

  2)一個控件的id,name,或者其他函數相關關聯的定義會采用稍微不同的定義。如在string里的string name一般為小寫字母開頭,之后的每個單詞首個大寫;設置id則在前面添加其標簽的縮寫字母(如,button標簽下的就在string name 前面添加字母b,並將b后第一個字母大寫,TextView標簽下則添加字母tv,並將tv后第一個字母大寫);在其他函數如MainActivity函數中使用相關聯的變量時,則在string name前面添加字母m,並將m后第一個字母大寫。

  實例:創建一個加一按鈕則string name就是addOne,id就是bAddOne,主函數相關聯的函數變量就是mAddOne。

  3)注意分段,分行,讓整個代碼看起來有層次。方便閱讀,方便修改。也能讓自己寫代碼的時候心情更好,因為代碼不可能是一次性寫好寫完,總要回頭來修改查看,如果沒有好的層次感,很難在看自己寫的代碼的時候有好心情,這不但影響工作和學習,還打擊我們對開發的熱情。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM