第15天~Spinner

Spinne-下拉式选单 跟ListView很像但是比较小

https://ithelp.ithome.com.tw/upload/images/20220202/20119035QHrVvRzZ8B.png

不是Menu
https://ithelp.ithome.com.tw/upload/images/20220202/20119035D2bBIOVcB0.png


做MainActivity.xml档

https://ithelp.ithome.com.tw/upload/images/20220202/20119035nYOgKwQcyF.png

spinner反红还是可以用

https://ithelp.ithome.com.tw/upload/images/20220202/20119035UmOyuRd83v.png

https://ithelp.ithome.com.tw/upload/images/20220202/20119035T9yxJGA5tc.png


做res里的 strings.xml档

https://ithelp.ithome.com.tw/upload/images/20220202/20119035V8kRPGKkBz.png

<resources>
    <string name="app_name">Spinner</string>

    <string-array name="meal">
        <item>美式汉堡</item>
        <item>猪肉汉堡</item>
        <item>牛肉汉堡</item>
        <item>泡菜汉堡</item>
        <item>米汉堡</item>
    </string-array>

    <string-array name="drink">
        <item>可乐</item>
        <item>绿茶</item>
        <item>奶茶</item>
        <item>果汁</item>
    </string-array>


</resources>

sp_meal-用绑定
MainActivity.xml档的资料跟谁绑定看entries

https://ithelp.ithome.com.tw/upload/images/20220202/20119035k5ud7moh9t.png

画面的"三角形"是不能点的~

https://ithelp.ithome.com.tw/upload/images/20220202/20119035ULjxwuG2l8.png

@是res
array阵列
/meal里面的样子

1-sp_meal-用绑定
https://ithelp.ithome.com.tw/upload/images/20220202/20119035WtuAPXjSbs.png


2-sp_drink-在java档-宣告

String sp1,sp2,sp3;蒐集点到的字串

package com.huang.my_spinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends AppCompatActivity {

    //宣告变数
    Button button;
    Spinner sp_meal,sp_drink,sp_dessert;
    String sp1,sp2,sp3;


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

把sp_meal,sp_drink,sp_dessert;初始化完.因为sp_meal已经做完了,所以做後面sp_drink,sp_dessert

ArrayAdapter adapter = new ArrayAdapter<>(); 完成转换的内容

https://ithelp.ithome.com.tw/upload/images/20220202/201190352fRBKjhUx9.png

安卓的前後都要写+使用下拉参数 android的a要小写

https://ithelp.ithome.com.tw/upload/images/20220202/20119035uXTCQnZtAJ.png

package com.huang.my_spinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends AppCompatActivity {

    //宣告变数
    Button button;
    Spinner sp_meal,sp_drink,sp_dessert;
    String sp1,sp2,sp3;


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

        sp_meal =findViewById(R.id.sp_meal);
        sp_drink = findViewById(R.id.sp_drink);
        sp_dessert = findViewById(R.id.sp_dessert);

        //第二组:取得array资源
        //取得DATA-->转换-->元件呈现
        String[] drink =getResources().getStringArray(R.array.drink);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                drink

        );

        //第三组


    }
}

在元件中呈现

package com.huang.my_spinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends AppCompatActivity {

    //宣告变数
    Button button;
    Spinner sp_meal,sp_drink,sp_dessert;
    String sp1,sp2,sp3;


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

        sp_meal =findViewById(R.id.sp_meal);
        sp_drink = findViewById(R.id.sp_drink);
        sp_dessert = findViewById(R.id.sp_dessert);

        //第二组:取得array资源
        //取得DATA-->转换-->元件呈现
        String[] drink =getResources().getStringArray(R.array.drink);

        //进行转换成指定的格式
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                drink

        );
        //在元件中呈现
        sp_drink.setAdapter(adapter);



        //第三组


    }
}

模拟器看

https://ithelp.ithome.com.tw/upload/images/20220202/20119035Qta8rhZyPu.png

https://ithelp.ithome.com.tw/upload/images/20220202/20119035vWxXPV6CiT.png

https://ithelp.ithome.com.tw/upload/images/20220202/20119035nTHNzSe0o5.png

到目前是纯粹看-

3-sp_dessert-汇入res

https://ithelp.ithome.com.tw/upload/images/20220202/20119035uCPNX7HSfz.png

package com.huang.my_spinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends AppCompatActivity {

    //宣告变数
    Button button;
    Spinner sp_meal,sp_drink,sp_dessert;
    String sp1,sp2,sp3;


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

        sp_meal =findViewById(R.id.sp_meal);
        sp_drink = findViewById(R.id.sp_drink);
        sp_dessert = findViewById(R.id.sp_dessert);

        //第二组:取得array资源
        //取得DATA-->转换-->元件呈现
        String[] drink =getResources().getStringArray(R.array.drink);

        //进行转换成指定的格式
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                drink

        );
        //在元件中呈现
        sp_drink.setAdapter(adapter);

        //第三组
        String[] dessert={"布丁","饼乾","CAKE","不要甜点"};
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                dessert

        );
        //在元件中呈现
        sp_dessert.setAdapter(adapter1);


    }
}

改下拉字的大小+呈现也是要用java档-新增layout资料夹

https://ithelp.ithome.com.tw/upload/images/20220202/20119035T6jPeQwIB7.png

https://ithelp.ithome.com.tw/upload/images/20220202/20119035zBFoDEFm1t.png

拉一个textView近来改宽30dp-上下左右不要绑
https://ithelp.ithome.com.tw/upload/images/20220202/20119035POF8AYuqBv.png

字的大小
https://ithelp.ithome.com.tw/upload/images/20220202/201190355kLbixXava.png

背景色-background--选color

https://ithelp.ithome.com.tw/upload/images/20220202/20119035tRYo5pWTTj.png

改layout_margin是10dp

https://ithelp.ithome.com.tw/upload/images/20220202/20119035DaBVbZw2ua.png

字的颜色-textColor

https://ithelp.ithome.com.tw/upload/images/20220202/20119035jvdhGDgdFB.png


再来到程序码去修改~
https://ithelp.ithome.com.tw/upload/images/20220202/20119035zNlOLTLjDc.png

画线的要搬家

https://ithelp.ithome.com.tw/upload/images/20220202/20119035iTlQi1Z6WJ.png

把其他的删掉-剩下长这样
https://ithelp.ithome.com.tw/upload/images/20220202/20119035xL00GAwndr.png

有出错就是有重复

https://ithelp.ithome.com.tw/upload/images/20220202/20119035KuGXayDbvO.png

<?xml version="1.0" encoding="utf-8"?>


    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="10dp"
        android:background="@color/purple_200"
        android:text="TextView"
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textColor="@color/design_default_color_error"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="16dp" />



把第3组加入刚刚设计的

https://ithelp.ithome.com.tw/upload/images/20220202/20119035UELhw53wn7.png

package com.huang.my_spinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends AppCompatActivity {

    //宣告变数
    Button button;
    Spinner sp_meal,sp_drink,sp_dessert;
    String sp1,sp2,sp3;


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

        sp_meal =findViewById(R.id.sp_meal);
        sp_drink = findViewById(R.id.sp_drink);
        sp_dessert = findViewById(R.id.sp_dessert);

        //第二组:取得array资源
        //取得DATA-->转换-->元件呈现
        String[] drink =getResources().getStringArray(R.array.drink);

        //进行转换成指定的格式
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                drink

        );
        //在元件中呈现
        sp_drink.setAdapter(adapter);

        //第三组
        String[] dessert={"布丁","饼乾","CAKE","不要甜点"};
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                dessert

        );
        //在元件中呈现
        adapter1.setDropDownViewResource(R.layout.mylayout);
        sp_dessert.setAdapter(adapter1);
            }
}

https://ithelp.ithome.com.tw/upload/images/20220202/20119035FaM732Zl0c.png

只要看第一个com就好..其他是系统测试用-


按钮完成-
1-初始化按钮
2-加侦听器
https://ithelp.ithome.com.tw/upload/images/20220202/20119035P2z0jSVg7W.png

3-选到的项目转成字串

https://ithelp.ithome.com.tw/upload/images/20220202/20119035wKZoxmDEIC.png

package com.huang.my_spinner;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    //宣告变数
    Button button;
    Spinner sp_meal,sp_drink,sp_dessert;
    String sp1,sp2,sp3;


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

        sp_meal =findViewById(R.id.sp_meal);
        sp_drink = findViewById(R.id.sp_drink);
        sp_dessert = findViewById(R.id.sp_dessert);

        //第二组:取得array资源
        //取得DATA-->转换-->元件呈现
        String[] drink =getResources().getStringArray(R.array.drink);

        //进行转换成指定的格式
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                drink

        );
        //在元件中呈现
        sp_drink.setAdapter(adapter);

        //第三组
        String[] dessert={"布丁","饼乾","CAKE","不要甜点"};
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
                MainActivity.this,
                android.R.layout.simple_spinner_dropdown_item,
                dessert

        );
        //在元件中呈现
        adapter1.setDropDownViewResource(R.layout.mylayout);
        sp_dessert.setAdapter(adapter1);

        //Button
        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //第1组
                sp1 =sp_meal.getSelectedItem().toString();
                Toast.makeText(MainActivity.this,sp1,Toast.LENGTH_SHORT).show();

                //第2组
                sp2 =sp_drink.getSelectedItem().toString();
                Toast.makeText(MainActivity.this,sp2,Toast.LENGTH_SHORT).show();

                //第3组
                sp3 =sp_dessert.getSelectedItem().toString();
                Toast.makeText(MainActivity.this,sp3,Toast.LENGTH_SHORT).show();

            }
        });

        }
}

Toast也是要用手机测试才看的到-

https://ithelp.ithome.com.tw/upload/images/20220202/20119035EwMOwXeVXw.jpg

https://ithelp.ithome.com.tw/upload/images/20220202/20119035cMvYUgIyuM.jpg

https://ithelp.ithome.com.tw/upload/images/20220202/20119035xzdnv2Faby.jpg

https://ithelp.ithome.com.tw/upload/images/20220202/20119035rwRW03wtj8.jpg


前面~都补好了喔
/images/emoticon/emoticon08.gif

0.0居然被发现偷吃步在续命的方法了~
我真的很想好好写
但是因为肚子会饿~需要先赚钱钱
要努力挤出时间~
大大有兴趣可以看我去年modern web是有补好的喔~
今年会努力在完赛前补好的...


<<:  Day 0x1D UVa10226 Hardwood Species

>>:  DAY15 注册按钮功能实现

画一个三角形(上)

大家好,我是西瓜,你现在看到的是 2021 iThome 铁人赛『如何在网页中绘制 3D 场景?从 ...

D08 / 怎麽做自己的 Modifier.padding? - Custom Layout Modifier

今天大概会聊到的范围 layout modifier 上一次讨论到 Modifier 时,觉得自己...

AE特效烛火-Day14

六指渊参考范例:https://www.sixvfx.com/ae_combustion 今天练习烛...

推论统计-认识假设检定

上一次我们已经厘清了中央极限定理的概念了~不知道这样的解说是否清晰?统计学其实是一个非常实用性的科学...

[Day 21] 2D批次渲染 (三) - Bug!一堆Bug

今日目标 继续完成批次渲染 结果... 今天抓到一堆bug,但是还是没debug完,被我弄丢的小方块...