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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

4327閲覧

android stuido spinnerに入る文字列が長い

komarimasitarou

総合スコア12

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2018/12/21 10:22

spinnerにセットする文字列が長いので全てが表示されない

andorid studioを使用してアンドロイドアプリを作成しています。
spinnerにセットする値が最大50文字となっているのですが、14文字は表示されるのですが
以降は...と表示されます。

実現したいこと

エクセルでいう「縮小して全体を表示」。
もしくは長い場合自動改行をする等。(改行してしまうと、デザイン的にわけがわからないことになりそうですが)

最後に

セットする文字列はDBから取得しているので、文字数にあわせて改行を入れる方法は考えたのですが、
未熟な自分では時間がかかりそう & 選択された値からコードを取得する、という動きなので改行いれると
選択された値を取得する時に改行の除去の動きを追加しなくてはならいので躊躇しています。
また上でもかきましたが、改行してしまうとデザイン的にわけがわからないことになりそうと思っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

###回答
自分で専用のレイアウトを作ってください。

###サンプル
サンプルを示します。Kotlin で書いていますが、Android でも同様です。
custom_spinner_item というレイアウトを作り、それを使う形にしています。

  • MainActivity.kt

Kotlin

1package com.example.myapplication 2 3import android.os.Bundle 4import android.support.v7.app.AppCompatActivity 5import android.widget.ArrayAdapter 6import android.widget.Spinner 7 8class MainActivity : AppCompatActivity() { 9 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_main) 13 14 var exampleSpinner: Spinner = findViewById(R.id.exampleSpinner) 15 var adapter = ArrayAdapter<String>( 16 this, 17 // ここで Spinner 用のカスタムレイアウトを割り当てる。 18 R.layout.custom_spinner_item, 19 arrayOf( 20 "12345678901234567890123456789012345678901234567890", 21 "12345678901234567890123456789012345678901234567890", 22 "12345678901234567890123456789012345678901234567890" 23 ) 24 ) 25 // ここでドロップダウン用のカスタムレイアウトを割り当てる。 26 adapter.setDropDownViewResource(R.layout.custom_spinner_item) 27 exampleSpinner.adapter = adapter 28 } 29} 30

以下はレイアウトです。@android:id/text1 のところに対象のテキストが設定されます。

  • custom_spinner_item.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<TextView xmlns:android="http://schemas.android.com/apk/res/android" 3 android:id="@android:id/text1" 4 style="?android:attr/spinnerItemStyle" 5 android:layout_width="match_parent" 6 android:layout_height="wrap_content" 7 android:textAlignment="inherit"/>

###備考
Spinner のデフォルトのレイアウトは android.R.simple_spinner_item / android.R.simple_spinner_dropdown_item です。
このレイアウトに文字が多かったら省略表記をするという設定が書かれているために現在そうなっています(具体的には android:singleLine="true" android:ellipsize="marquee")。
ArrayAdapter 作成時にカスタムレイアウトを指定できるので設定してしまえば好きなようにできます。
サンプルでは android.R.simple_spinner_item から android:singleLine="true" android:ellipsize="marquee" を消したものを使っています。

###参考

投稿2019/01/06 16:01

toydev

総合スコア297

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

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

komarimasitarou

2019/01/07 05:25

サンプルまでありがとうございます。 また簡潔な回答で助かりました。 色々調べていたら、自分で作るしかないのか・・? となって後回しにしておりましたが、作業を進めようと思います。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問