web-dev-qa-db-ja.com

Androidカスタムスタイルのないスピナーのアイテム間にスペースを追加しますか?

私はAndroid私がコンクリートの会社のために書いているアプリケーションで、出勤と退勤に使用します。いくつかのスピナーを使用して、ドロップダウンからWork SiteやJobなどを選択しました。しかし、スピナーのアイテムが近すぎて、従業員が正しいアイテムを選択するのが難しいのではないかと心配しています。

スピナーのアイテム間にもう少しスペースを空けたいのですが、カスタムスタイルを作成する手間を省きたいです。なぜなら、スピナーの外観と動作をデフォルトとまったく同じにしたいからです。パディングが少し増えるだけで、そのためのカスタムスタイルを作成するのは大変な作業です。

スピナーのプロパティを設定するなど、簡単な変更はありますか?スピナータイプをDialogに設定しようとしましたが、スピナーコントロールに接続されていないだけで、同じ間隔でリストが表示されます。

18
Jim

プラニャーニの答えは正しいと思いますが、これが実際に実装した方法です...

-RES/layoutで、以下に示すように、テキストビューのみを含むXMLレイアウトを作成しました。このテキストビューには、必要なカスタムサイズ/パディングがあります。

spinner_row.xml

  <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/cust_view"
        Android:minWidth="246dp"
        Android:layout_width="match_parent"
        Android:layout_height="48dp"
        Android:gravity="left|center_vertical"
        Android:textColor="@Android:color/black"    
        Android:textSize="20sp"
        Android:paddingLeft="4dp"
        Android:textIsSelectable="false"/>

次に、スピナーにデータを読み込むアクティビティで、スピナーのArrayAdapterを作成するときに、カスタムテキストビューを2番目のパラメーターとしてArrayAdapterコンストラクターに渡します。

Spinner spinClockInWorkSite = (Spinner)findViewById(R.id.spinClockInWorkSite);
ArrayAdapter spinClockInWorkSiteAdapter = new ArrayAdapter(this, R.layout.spinner_row, this.workSiteList);
spinClockInWorkSite.setAdapter(spinClockInWorkSiteAdapter);

したがって、スピナーは、リスト内の各アイテムに対してspinner_row.xmlで定義されているカスタムテキストビューを使用します。

これは、スタイルをいじるよりも、私のニーズにとってより単純なものになりました。

25
Jim

満足のいくスペーシングを与えたい場合は、これらすべてのXMLとすべての場合の代わりに、スピナーアダプタで「simple_spinner_dropdown_item」を簡単に使用できます。

お気に入り

String [] dataList = new String[]{"Select","A","B","C","D","E"};
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                Android.R.layout.simple_spinner_dropdown_item, dataList);
        spinner.setAdapter(dataAdapter);

それは私のために働いた。

16
Ajit Sharma

これを試してください。ここでは、スピナースタイルを変更していませんが、スピナーアイテムのスタイルを設定して、スピナーアイテムに必要な機能を追加しています。

<style name="spinnerStyle"  parent="@Android:style/Widget.TextView.SpinnerItem">
       <item name="Android:padding">5sp</item>
    </style>

そして、スタイル属性を使用してスピナーにスタイルを適用します

 style="@style/spinnerStyle"
5
Pragnani

本当に特定の間隔が必要でない限り、組み込みのレイアウトの1つを使用します。

simple_spinner_item = No line space.
simple_spinner_dropdown_item = 1 line space.
simple_dropdown_item_1line = 1.5 line space.

これら以上はR.classにあります

2
Jeffrey
adapter=new ArrayAdapter<String>(this,Android.R.layout.simple_dropdown_item_1line, 
ArrayList);
1