iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
0
自我挑戰組

向Android APP開發說Hello系列 第 12

Day 12. ScrollView與EditText

  • 分享至 

  • xImage
  •  

這是目前為止,已經建立的app畫面:
Alt Text

可改進的部分

大致還有幾點可以修改:

  1. 若連續點擊"-"號,便當的訂購數量會變成負的。
  2. 消費者的名稱目前是直接賦予TextBox,我們需要一個輸入框來做這件事。
  3. 若手機橫著看時,app的Layout內容在手機上可能會超出畫面。
    以下分別來看一下如何解決。

1. 避免數量為負值

目前的數量顯示函式displayQuantity()中,加入檢查的if條件。
分別在訂購數量(number)為負時,一律為0,順便設定上限為100個。

    if(number < 0){
        quantity = 0;
        return;
    }
    if(number > 100){
        quantity = 100;
        return;
    }
private void displayQuantity(int number){
    TextView quantityTextView = findViewById(R.id.quantity_text_view);
    quantityTextView.setText("" + number);
}

2. EditText (輸入框)

在Android中,使用EditText來達成,在Layout中適當位置插入以下EditText

XML:

<EditText
android:id="@+id/text_input_name"
android:layout_height="wrap_content"
android:layout_width="150dp"
android:layout_marginTop="16dp"
android:inputType="text"
android:textSize="16sp"
android:hint="姓名"/>

Java:

修改submitOrder()方法的內容,加入**//取得顧客姓名**的區塊。

    //送出訂單
    public void submitOrder(View view){
        //是否加購塑膠袋
        CheckBox plasticBagCheckBox = findViewById(R.id.addPlasticBag_checkbox);
        boolean hasPlasticBag = plasticBagCheckBox.isChecked();
        Log.v("MainActivity", "has plastic bag: " + hasPlasticBag);

        //取得顧客姓名
        EditText customerNameInput = findViewById(R.id.text_input_name);
        String customerName = customerNameInput.getText().toString();

        int price = calculatePrice();
        
        if(hasPlasticBag==true){
            price += 2;
        }

        String priceMessage = createOrderSummary(price, hasPlasticBag, customerName);
        displayMessage(priceMessage);
    }

3. ScrollView (畫面捲動)

ScrollView的用法較單純,在其標籤中的區塊都會被加入能被捲動的範圍內。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
   
     <!-- 這裡放入一或多個View(s),或是一整段設計好的Layout --> 
    
</ScrollView>

運作畫面

加入了EditText的Layout

Alt Text

加入了ScrollView的效果

Alt Text

下一步

在這個app的最後,我們希望能夠真正透過email送出訂單。
這部分會需要跨app間的資訊交換,留待明天分享囉。

References


上一篇
Day 11. 便當訂購介面與CheckBox (Part. 2)
下一篇
Day 13. App間的資訊傳遞 - Intent
系列文
向Android APP開發說Hello30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言