4

私は1つの例を開発しました。

ここでは、スピナー プロンプトのスタイルを設定する必要があります。私を助けてください。どうすればスタイリングできますか?

これは私のstring.xmlコードです:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, CustomizedListView!</string>
<string name="app_name">CustomizedListView</string>
<string name="status_prompt">Choose a Status</string>
</resources>

このコードは、私の main.xml で使用されます。

<Spinner android:id="@+id/spinner1" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="106dp"
    android:layout_y="100dp"
    android:prompt="@string/status_prompt" 
    android:background="@drawable/btn_dropdown"/>

ここで背景色を変更したいのですがtextSizetextStyle下の画像で。どうすればこれを変更できますか。

スピナープロンプト

編集:styles.xml に以下のコードを追加しました

<style name="spinner_style">                        
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#040404</item>
<item name="android:typeface">monospace</item>
<item name="android:background">#FFFFFF</item>
</style>

また、スピナーの main.xml の行の下に追加されました。

  style="@style/spinner_style"   

しかし、それは私にとってもうまくいきませんでした。スピナー プロンプト メッセージのスタイルを設定するにはどうすればよいですか。

編集:

これは私のJavaコードですArrayAdaper

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);
    //set the view for the Drop down list
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    //set the ArrayAdapter to the spinner
    spinner.setAdapter(adapter);
    adapter.notifyDataSetChanged();
    //attach the listener to the spinner
    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    }

ここでプロンプト スタイルを設定するにはどうすればよいですか。

4

2 に答える 2

3

プロンプトを変更するには、@aswin-kumar が提案したのと同様の方法を使用する必要がありますが、ドロップダウンの最初の要素に別のスタイルを使用する必要があります。

まず、それを拡張ArrayAdapterして呼び出しますCustomArrayAdapter: package com.example.project;

package com.example.project;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.List;


// I extend this using ArrayAdapter<String>, but you can use anything as the type
// parameter, or parameterize it as necessary.
public class CustomArrayAdapter extends ArrayAdapter<String> {

    private String title;

    public CustomArrayAdapter(Context aContext, int aTextViewResource, List<String> aOptions, String title) {
        super(aContext, aTextViewResource, aOptions);
        this.title = title;
    }

    @Override
    public View getDropDownView(int aPosition, View aConvertView, ViewGroup aParent) {

        LinearLayout v = null;

        if (aPosition == 0) {
            LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = (LinearLayout) inflater.inflate(R.layout.dropdown_header, aParent, false);
            TextView tv = (TextView) v.findViewById(R.id.dropdown_item);
            tv.setText(getItem(aPosition));
        } else {
            LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = (LinearLayout) inflater.inflate(R.layout.dropdown_item, aParent, false);
            TextView tv = (TextView) v.findViewById(R.id.dropdown_item);
            tv.setText(getItem(aPosition));
            tv.setHeight((int) (tv.getTextSize() * 2));
        }


        return v;
    }

    @Override
    public int getCount() {
        return super.getCount() + 1;
    }

    @Override
    public String getItem(int position) {
        if (position == 0) {
            return title;
        }
        return super.getItem(position - 1);
    }

    @Override
    public boolean isEnabled(int position) {
        return position != 0;
    }
}

次に、次のレイアウトを に使用しますdropdown_header.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/dropdown_item"
        android:textColor="@android:color/black"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="16dp"
        android:paddingBottom="16dp"
        android:paddingLeft="16dp"
        android:gravity="left|center_vertical"
        android:textSize="9pt" />

    <!-- This adds a black separator line between the title and the items. You can remove
         if you want -->
    <LinearLayout
        android:id="@+id/separator"
        android:layout_height="4dp"
        android:layout_width="match_parent"
        android:background="@android:color/black"
        android:orientation="vertical"/>
    </LinearLayout>

フォーム ビュー レイアウト ファイル (form_view_layout.xml):

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner_dialog_root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="9pt" />

スピナー レイアウト ファイル ( spinner_layout.xml):

 <Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@android:color/transparent"/>

次に、新しいアダプターを に取り付けますSpinner

CustomArrayAdapter adapter = new CustomArrayAdapter(aActivity, R.layout.form_view_layout, aModel.getEnumerableOptions(), aModel.getTitle());
View parentView = aActivity.getLayoutInflater().inflate(R.layout.spinner_layout, aParent, false);

spinner = (Spinner) parentView.findViewById(R.id.spinner);
spinner.setAdapter(adapter);

最後に、表示する文字列をスピナー アダプターに追加しadapter、適切なファイルのスタイルを設定すると、準備完了です。

于 2014-08-18T20:09:13.427 に答える
2

から拡張するスピナー用の独自のアダプターを作成する必要がありますArrayAdapter。このgetView()関数は、pic で示したビューを描画する必要があることをレイアウト システムが示したときに呼び出されます。これをオーバーライドして、textSize、textStyle などを追加できます。

更新: 大まかなコード サンプルは次のようになります。

private class MySpinnerAdapter extends ArrayAdapter<String> {
        public MySpinnerAdapter(Context context, int resource,
                int textViewResourceId, List<String> objects) {
            super(context, resource, textViewResourceId, objects);
        }

    public View getView(int position, View convertView,
            ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        // apply the style and sizes etc to the Text view from this view v
        // like ((TextView)v).setTextSize(...) etc
        return v;
    }

    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
        // this is for each of the drop down resource that is created. 
            // you can style these things too
        }
}

これをスピナーのアダプターとして使用します。

mySpinner.setAdapter(new MySpinnerAdapter(ActivityName.this,
                    R.layout.spinner_item,
                    R.id.spinner_item_TextView, 
                    listOfItemsInSpinner));
于 2012-10-16T12:17:14.823 に答える