[解決済み] スピナーテキストにカスタムフォントを設定するには?
2023-02-12 08:35:17
質問
私のassetsフォルダにttfフォントファイルがあります。私はとテキストビューのためにそれを使用する方法を知っています。
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
スピナーテキストを独自のxmlファイルで探すように定義しています。
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
私はコードからこのテキストビューを参照することができません、私は常にNULLポインタ例外を取得します。例えば、私は試してみました。
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
xmlで定義されたスピナーテキストにも外部フォントを選択することは可能ですか?
ありがとうございます。
回答とともにEDITしてください。
これは動作します。
String [] items = new String[2];
items[0]="Something1";
items[1]="Something2";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinaca, items) {
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
return v;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v =super.getDropDownView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
v.setBackgroundColor(Color.GREEN);
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
を追加する必要があるかもしれません。
import android.view.ViewGroup;
をファイルの先頭のインポートリストに追加してください。なぜかEclipseは、コードに含まれるViewGroupクラスを認識しない場合、この提案を行いません。
どのように解決するのですか?
これは、私の場合、次のような方法で解決しました (以下の両方のアイデアを使用しています。 CommonsWare の と gsanllorente の の回答)。
private static class MySpinnerAdapter extends ArrayAdapter<String> {
// Initialise custom font, for example:
Typeface font = Typeface.createFromAsset(getContext().getAssets(),
"fonts/Blambot.otf");
// (In reality I used a manager which caches the Typeface objects)
// Typeface font = FontManager.getInstance().getFont(getContext(), BLAMBOT);
private MySpinnerAdapter(Context context, int resource, List<String> items) {
super(context, resource, items);
}
// Affects default (closed) state of the spinner
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getView(position, convertView, parent);
view.setTypeface(font);
return view;
}
// Affects opened state of the spinner
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView view = (TextView) super.getDropDownView(position, convertView, parent);
view.setTypeface(font);
return view;
}
}
もしあなたが、私のように、元々スピナーに
ArrayAdapter.createFromResource()
と配列リソース (例えば
スピナーのドキュメント
のように)、MySpinnerAdapterをこのように使用することになります。
MySpinnerAdapter<String> adapter = new MySpinnerAdapter(
getContext(),
R.layout.view_spinner_item,
Arrays.asList(getResources().getStringArray(R.array.my_array))
);
spinner.setAdapter(adapter);
関連
-
[解決済み] スピナーの文字サイズと文字色を変更するには?
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] プログラムによりスピナーの選択項目を設定する
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] 初期テキストが「Select One」のAndroidスピナーを作るには?
-
[解決済み] 新しくインスタンス化されたスピナーで、onItemSelectedを起動させないようにするにはどうすればよいですか?
-
[解決済み] スピナー選択項目のテキストを取得しますか?
-
[解決済み】iPhoneアプリケーションにカスタムフォントを埋め込むことはできますか?
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】異なるアクティビティで同じナビゲーションドローワを使用する場合
-
[解決済み] ビューからホスティングアクティビティを取得する方法は?
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?