スピナーの基本的な使用法 (リスト オプション ボックス)
このセクションの紹介:
元々、このセクションでは Gallery のコントロールについて紹介するつもりでしたが、よく考えたら忘れていました。 Android 4.1以降は非推奨になりましたが、互換性によりギャラリーを使用できますが、よく考えてください。 ギャラリーは画像を切り替えるたびにビューを再作成する必要があるため、このことは忘れてください。 なんという資源の無駄遣いでしょう!水平スクロールビューなどの他の方法でギャラリー効果を実現できます。 水平スクロール効果を実現するには、水平方向の ListView を作成します。興味がある場合は、自分で Google で調べてください。
このセクションでは、Spinner と呼ばれるアダプター コントロールについて説明します。 アプリケーション シナリオ: アプリがユーザーにデータの入力を要求する場合、ユーザーが自分で入力できるようにするだけでなく、より配慮した設計もあります。 ユーザーが選択できる一連のオプションをリストすることで、ユーザーが選択しやすくなります。 早速、Spinner の基本的な使い方を学びましょう~
1リストボックスの水平オフセット距離 水平距離と垂直距離
:android:dropDownSelector
レンダリングを見てみましょう- : リストボックスが選択されたときの背景
android:dropDownWidth- : ドロップダウンリストボックスの幅を設定
android:gravity- : 内部のコンポーネントの配置を設定します
android:popupBackground- : リスト ボックスの背景を設定します
android:prompt- : ダイアログ モードでリスト ボックスのプロンプト情報 (タイトル) を設定します (string.xml のみ)引用することができます リソース ID 内のリソース ID を文字列として直接書き込むことはできません
android:spinnerMode- : リスト ボックスのモード、オプションの値が 2 つあります: dialog: ダイアログ スタイルのウィンドウ
dropdown- : ドロップダウンメニュー スタイル ウィンドウ (デフォルト)オプションの属性:
android:entries- : 配列リソースを使用してドロップダウン リスト ボックスのリスト項目を設定します2. 使用例:
- ちなみに、Spinnerデフォルトで最初の値が選択されます。つまり、Spinner.setSection(0) がデフォルトで呼び出されます。 これにより、デフォルトの選択値を設定できます。さらに、OnItemSelectedListener が 1 回トリガーされます。 イベント、解決策はまだ見つかりません。次の妥協策は、ブール値を追加してから設定することです。 falseの場合はonItemSelected時に判定され、デフォルトでトリガーされ何も動作しません。 ブール値を true に設定します。true の場合、イベントは通常どおりトリガーされます。 この例では、データ ソース、リスト ボックス スタイルなどから比較する 2 つの異なるスピナーが書き込まれています。~ 次に、
コード実装:
ここでは以前の再利用可能なBaseAdapterがまだ使用されています:
最初のSpinnerのデータソースの書き込み:res/values の下に次の内容のファイルを書き込みます: myarrays.xml:
<string-array name="data">
< <item>高級プラチナ</item>
>
< /string-array>
</resources>
次に、 2 番目のスピナー:
item_spin_hero.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="horizontal"<ImageView
android:id= "@+id/img_icon"
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@ mipmap/iv_lol_icon1" /> android:layout_marginLeft="10dp"
android :layout_marginTop = "15dp 」
再続编写一个Entitiy实体类:Hero.java:
* 2015/9/24 0024 に Jay によって作成されました。
*/
public class Hero {
private int hIcon;
private String hName;
publicヒーロー() {
}
public Hero(int hIcon, String hName) {
this.hIcon = hIcon;
this.hName = hName;
}
public int gethIcon() {
return hIcon;
}
public String gethName() {
return hName;
}
public void sethIcon(int hIcon) {
this.hIcon = hIcon;
}
public void sethName(String hName) {
this.hName = hName;
}
}
最後は MainActivity の布局と Java 代コード部分:
布局文件:activity_main.xml:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择您的排位分段"
android:textColor= "#44BDED"
android:textSize="18sp" />
<スピナー
android:id="@+id/spin_one"
android:layout_width="100dp"
android:layout_height="64 dp"
アンドロイド:entries="@array/data"
android:prompt="@string/spin_title"
android:spinnerMode="dialog" />
<TextView
android:layout_width="wrap_content"
android:layout _高さ= Wrap_content"
android:layout_marginTop="10dp"
android:text="选择你的拿手英雄~"
android:textColor="#F5684A"
android:textSize="18sp" />
<スピナー
アンドロイド:id="@+id/spin_two"
android:layout_width="wrap_content"
android:layout_height="64dp" />
</LinearLayout>
MainActivity.java:
private Spinner spin_one;
private Spinner spin_two;
private Context mContext;
// 刚进去かどうか判断する時間接触ItemSelectedの标志
private boolean one_selected = false;
private boolean two_selected = false;
private ArrayList<Hero> mData = null;
private BaseAdapter myAdadpter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
mData = new ArrayList<Hero>();
bindViews();
}
private void bindViews() {
spin_one = (Spinner) findViewById(R.id.spin_one);
spin_two = (スピナー) findViewById(R .id.spin_two);
mData.add(new Hero(R.mipmap.iv_lol_icon1,"迅捷斥候:提莫(Teemo)"));
mData.add(new Hero(R.mipmap.iv_lol_icon2,"诺)克萨斯之手:德莱耶斯(ダリウス)"));
mData.add(new Hero(R.mipmap.iv_lol_icon3,"無极剑圣:易(Yi)"));
mData.add(new Hero(R.mipmap.iv_lol_icon4,"德莱厄斯:德莱文(Draven)"));
mData.add(new Hero(R.mipmap.iv_lol_icon5,"德邦总管:赵信(XinZhao)") );
mData.add(new Hero(R.mipmap.iv_lol_icon6,"狂战士:奥拉夫(オラフ)"));
myAdadpter = new MyAdapter<Hero>(mData,R.layout.item_spin_hero) {
@オーバーライド
public void bindView(ViewHolder holder, Hero obj) {
holder.setImageResource(R.id.img_icon,obj.gethIcon());
holder.setText(R.id.txt_name, obj.gethName());
}
};
spin_two.setAdapter(myAdadpter);
spin_one.setOnItemSelectedListener(this);
spin_two.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?>parent, View view, int Position, long id) {
switch (parent.getId()){
case R.id.spin_one:
if(one_selected){
Toast.makeText(m) Context,"您的分節は~:" + parent.getItemAtPosition (position).toString(),
Toast.LENGTH_SHORT).show();
}else one_selected = true;
break;
case R.id.spin_two:
if(two_selected){
TextView txt_name = (TextView) view .findViewById(R.id.txt_name);
Toast.makeText(mContext,"您选择的英雄是~:" + txt_name.getText().toString(),
トースト.LENGTH_SHORT).show();
} else two_selected = true
}
さらに、Spinner の OnItemSelectedListener と選択されたアイテムの取得方法については、自分で見てみるだけの価値があります。 コード~
3. コードサンプルのダウンロード:
SpinnerDemo.zip
このセクションの概要