Spinnerの文字の大きさを変える
Androidでコンボボックスを作成する場合はSpinnerを使用しますが、文字の大きさはSpinnerのtextSizeを変更しても変わりませんので、adapterから設定する方法を説明します。
res/layout/activity_main.xmlにSpinnerのViewを作成します。(この例ではid=tv0_t)
<Spinner
android:id="@+id/tv0_t"
android:entries="@array/spn_ds_CR_78"
android:layout_width="0dp"
android:layout_height="0dp"
android:spinnerMode="dialog"
/>
<aa>
android:spinnerModeは選択リストを表示する場所を指定します。 "dialog"と指定すると画面の真ん中に表示されます。 "DropDown"と 指定すると項目の場所に表示されます。
android:entriesには選択リストを指定します。
選択リスト はres/values/strings.xmlに作成します。
<string-array name="spn_ds_CR_78">
<item>bd _cr78_bassdrum</item>
<item>hc1_cr78_hat_closed_01</item>
<item>ho1_cr78_hat_open_01</item>
<item>qu1_cr78_quid_01</item>
<item>sd _cr78_snaredrum</item>
<item>tam_cr78_tambourine</item>
<item>wb1_cr78_woodblock_01</item>
</string-array>
MainActivity.ktでspinnerの tv0_t にonItemSelectedListenerを指定します。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
・・・
/////spinner item
tv0_t.onItemSelectedListener = SpinnerSelectedListener()
・・・
}
}
選択されたときに呼ばれる SpinnerSelectedListener()を MainActivity.kt の中に作成します。
inner class SpinnerSelectedListener : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
if (parent === findViewById<View>(R.id.tv0_t)) {
var s_tv0_t = tv0_t.getSelectedItem() as String
// 選択された時の処理
}
}
// 何も選択されなかった時の動作
override fun onNothingSelected(parent: AdapterView<*>) {}
}
ここまでで普通のspinnerが使用できるかと思います。
表示される文字のサイズは、 spinner のプロパティを設定しても変更されませんので、変更する方法を説明します。
表示するための spinnerの項目のxmlを以下の内容でres/layoutにsp0.xmlで作成します。表示文字が表示しきれない場合、後ろに”...”が表示されますが、android:singleLine="true"の指定を外すと ”...” は表示されなくなります。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
/>
表示するための spinnerの選択リストのxmlを以下の内容でres/layoutにsp0_dd.xmlで作成します。
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="24sp"
/>
spinnerに sp0.xml と sp0_dd.xmlをArrayAdapterでセットして文字の大きさその他を設定できるようになります。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
・・・
/////spinner item
tv0_t.onItemSelectedListener = SpinnerSelectedListener()
val adapter = ArrayAdapter.createFromResource(this,
R.array.spn_ds_CR_78, R.layout.sp0)
adapter.setDropDownViewResource(R.layout.sp0_dd)
tv0_t.setAdapter(adapter)
・・・
}
}