テキストにドロップダウン表示させたいときに用いるのが、AutoCompleteTextView
上の画像のように入力途中の文字から、リストを表示しております。
よく使われる文字やユーザーの入力履歴を配列に格納して表示させる方法が一般的です。
■サンプルソース
package com.example.autoocomplication;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
static final String[] Yamanote = {"Shinjuku", "Akihabara", "Tamachi", "Shinbashi", "Ueno", "Tokyo", "Shibuya"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//レイアウトの生成
LinearLayout layout=new LinearLayout(getApplicationContext());
//上から下にオブジェクトを配置するよう設定
layout.setOrientation(LinearLayout.VERTICAL);
//背景色を変える
layout.setBackgroundColor(Color.DKGRAY);
//画面表示の設定
setContentView(layout);
//オートコンプリートテキストビューを画面に追加する
AutoCompleteTextView Actv = new AutoCompleteTextView(getApplicationContext());
//画面位置の設定
Actv.setLayoutParams(new LinearLayout.LayoutParams(300,100));
//文字色を指定
Actv.setTextColor(Color.BLACK);
//レイアウトに追加
layout.addView(Actv);
//adapterをセット
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_dropdown_item_1line, Yamanote){
@Override
public View getView(int position,View convertView,ViewGroup parent){
//テキストビューの取得
TextView tv = (TextView)super.getView(position,convertView,parent);
//テキストの色を指定
tv.setTextColor(Color.BLACK);
return tv;
}
};
Actv.setAdapter(adapter);
}
}
■実行結果
は上の画像で確認してください。
イメージとしては、TextViewとListViewをたして2で割る感じです。
//adapterをセット
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(), android.R.layout.simple_dropdown_item_1line, Yamanote){
getApplicationContext(), android.R.layout.simple_dropdown_item_1line, Yamanote){
内の
android.R.layout.simple_dropdown_item_1line
は指定されているスタイルなので、何も考えずにそのまま記述で大丈夫です。
Yamanote
はマッチさせたい文字列が格納されている配列です。
ArrayAdapterはListViewでも使うので、使い方を覚えておいて損はないでしょう。
@Override
public View getView(int position,View convertView,ViewGroup parent){
//テキストビューの取得
TextView tv = (TextView)super.getView(position,convertView,parent);
//テキストの色を指定
tv.setTextColor(Color.BLACK);
return tv;
}
public View getView(int position,View convertView,ViewGroup parent){
//テキストビューの取得
TextView tv = (TextView)super.getView(position,convertView,parent);
//テキストの色を指定
tv.setTextColor(Color.BLACK);
return tv;
}
この記述はドロップダウンの書式を設定しています。
たまに、ドロップダウンが表示されない!!
ってことが、ありますが、原因の多くは文字色が設定されておらず、
白色になっていることが原因です。
0 件のコメント:
コメントを投稿