質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1540閲覧

スピナーとその選択肢のフォントを、assetsに格納したttfのものに変更したい

kbys32

総合スコア55

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/05/21 12:07

編集2018/05/24 23:32

お世話になります。

表題の通り、スピナーと、その選択肢を、ttfファイルで持つフォントに指定したいのですが、方法がわからず、困っています。
ググっても、フォントの大きさを変える方法はありましたが、フォントネームを変える方法は、見つかりません。

テキストビューの場合、

java

1 textView=findViewById(R.id.TextView); 2 Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); 3 textView.setTypeface(font);

で変更できます。

スピナーの作り方は、

java

1 2 String[] strings = new String[]{" 初級"," 中級"," 上級","最上級"}; 3 spinner=findViewById(R.id.Spinner); 4 5 //アダプター設定 6 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item); 7 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 8 adapter.addAll(strings); 9 10 //スピナーにアダプタを登録 11 spinner.setAdapter(adapter); 12 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 13 @Override 14 public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 15 16 } 17 18 @Override 19 public void onNothingSelected(AdapterView<?> adapterView) { 20 21 } 22 });

で作っています。

下記コードも試してはみましたが、これを行うと画面が真っ白になってしまいました。

java

1 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item) { 2 3 // Spinnerの本体部分に表示されるView 4 @Override 5 public View getView(int position, View convertView, ViewGroup parent) { 6 7 TextView v = (TextView) super.getView(position, convertView, parent); 8 Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); 9 v.setTypeface(font); 10 v.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); 11 return v; 12 } 13 14 // Spinnerのドロップダウン部分に表示されるView 15 @Override 16 public View getDropDownView(int position, View convertView, ViewGroup parent) { 17 TextView v = (TextView) super.getDropDownView(position, convertView, parent); 18 Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); 19 v.setTypeface(font); 20 v.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); 21 return v; 22 } 23 24 };

どうすれば、フォントネームを変えることができますか。

android studioは3.1.2を使用
compileSdkVersionは27
minSdkVersionは16
targetSdkVersionは27
となっております。

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ArrayAdapterを継承したクラスを作成して、getViewやgetDropDownViewをオーバーライドすることで目的の処理が実現できると思います。

java

1// 匿名クラスで実装する例 2 3ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item) { 4 5 // Spinnerの本体部分に表示されるView 6 @Override 7 public View getView(int position, View convertView, ViewGroup parent) { 8 TextView v = (TextView) super.getView(position, convertView, parent); 9 Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); 10 v.setTypeface(font); 11 return v; 12 } 13 14 // Spinnerのドロップダウン部分に表示されるView 15 @Override 16 public View getDropDownView(int position, View convertView, ViewGroup parent) { 17 TextView v = (TextView) super.getDropDownView(position, convertView, parent); 18 Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); 19 v.setTypeface(font); 20 return v; 21 } 22 23}; 24 25... 26 27spinner.setAdapter(adapter);

投稿2018/05/22 14:38

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kbys32

2018/05/24 15:04 編集

ご回答をありがとうございます。 御示し下さりましたコードを実装しましたところ、メインのレイアウトが真っ白になるという、よくわからない現象が起きました。 レイアウトが乱れているのかと思い、修正箇所を ArrayAdapter<String> adapter =new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item) { // Spinnerの本体部分に表示されるView @Override public View getView(int position, View convertView, ViewGroup parent) { TextView v = (TextView) super.getView(position, convertView, parent); Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); v.setTypeface(font); v.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); return v; } // Spinnerのドロップダウン部分に表示されるView @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { TextView v = (TextView) super.getDropDownView(position, convertView, parent); Typeface font = Typeface.createFromAsset(getAssets(), "AozoraMincho-bold.ttf"); v.setTypeface(font); v.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); return v; } }; としましたが、真っ白のままでした。 こちらでは、引き続き原因を探してみますので、何か分かりましたらご一報ください。 宜しくお願い致します。
kakajika

2018/05/26 07:08

こちらでもそのフォントをダウンロードして同じコードを手元で実行してみましたが、特にそのような現象は起きませんね。他の箇所に原因があると思います。 それと、setLayoutParamsは関係ないので必要ないかと思います。
kbys32

2018/05/27 09:44

分かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問