21

出勤と退勤に使用されるコンクリート会社向けに作成しているAndroidアプリケーションがあります。いくつかのスピナーを使ってドロップダウンからWorkSiteやJobなどを選択しましたが、スピナー内のアイテムが近すぎて、従業員が適切なアイテムを選択するのが難しいのではないかと心配しています。

スピナーのアイテムの間にもう少しスペースを空けたいのですが、カスタムスタイルを作成する手間をかけたくありません。実際には、スピナーをデフォルトとまったく同じように見せて動作させたいからです。パディングを少し増やすだけで、そのためのカスタムスタイルを作成するのは大変な作業です。

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

4

5 に答える 5

28

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

- 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 で定義されたカスタム テキストビューを使用します。

これは、スタイルで遊ぶよりも、私のニーズにとってより簡単なものになりました.

于 2013-03-28T17:48:52.077 に答える
7

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

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

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

 style="@style/spinnerStyle"
于 2013-03-23T21:29:49.770 に答える