2013-04-11 25 views
6

私はリソースID android.R.layout.simple_spinner_dropdown_itemtextView android.R.layout.simple_spinner_dropdown_itemの色を変更するにはどうすればよいですか?

SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.R.layout.simple_spinner_dropdown_item); 

に建てられたが、そのリソースのIDが作成されますTextViewにはの、textColor黒と私は別の色を必要としている使用してSpinnerAdapterを作成しています。色を変えるのに他のすべてを同じに保つ最も良い方法は何ですか?

xmlファイルに独自のtextViewレイアウトリソースを作成しようとすると、

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/White" 
    /> 

、それが原因で、例えばandroid.R.layout.simple_spinner_dropdown_itemと同じように動作しません。パディングは異なります。だから

  1. android.R.layout.simple_spinner_dropdown_itemからすべてを継承し、textColorをオーバーライドすることができるxmlファイルに独自のレイアウトリソースを作成する方法はありますか?
  2. orroid.R.layout.simple_spinner_dropdown_itemの完全な定義はどこかで入手できますか?
  3. それとももっと簡単な方法がありますか?

この質問は、私が今日尋ねた別の質問(Can't change the text color with Android Action Bar drop-down navigation)に関連しています。私は、その質問(と、この質問)の答えは、から継承する私自身のArrayAdapterクラスを作成して、ArrayAdapterが使用されるたびに常にコード内の色を設定できることを認識しました。 。しかし、それは非常に厄介な解決策のように思えます。

テキストの色を変更するのは難しい作業ではありません。

答えて

8

Is there a way of creating my own layout resource in an xml file which inherits everything from android.R.layout.simple_spinner_dropdown_item and allows me to override the textColor?

ありませんが、あなたは、単にテキストの色を変更し、新しいファイルにsimple_spinner_dropdown_item.xmlのお気に入りのバージョンを貼り付け&をカットすることができます。

Or is the complete definition of android.R.layout.simple_spinner_dropdown_item available somewhere?

ありますが、さまざまなバージョンがあります。どのAPIが好きですか?また、あなたはそれぞれの行を膨らまた後、カスタムアダプタを作成し、テキストの色を変更することができ、すでに別のアプローチとして、(xxが特定のAPIです。)、<android-sdk>/platforms/android-xx/data/res/layout/をチェック


をハードドライブにコピーを持っているかもしれません上記のメソッドは、実行時の変更を伴わないため、少し速くなります。

+0

thx vm :-)実際には私は既にあなたの別のアプローチを見つけましたが、今では、おそらくそれに切り替えるxmlの定義を探す場所を教えてくれました。 – Stochastically

+0

+1あなたの考え方は...私はあなたのソリューションにこれを追加しました。これは変更なしですぐには機能しないからです。 – whyoz

0

カスタムアダプタを使用しない方が良いカスタムアダプタを作成し、次にあなたが、TEXTSTYLEを色、testSixeを変更することができます

android.R.layout.simple_spinner_dropdown_item 

の色を変更することは不可能である、など

+0

あなたがサムの言うことをすれば、simple_spinner_dropdown_item.xmlを編集することができます... – whyoz

9

サムの上で展開するにはAndroidスタイルをオーバーライドするには、非常に特殊な方法でファイルを変更する必要があります。あなたが作業している正しいレイアウトフォルダにSDKフォルダからsimple_spinner_dropdown_item.xmlをコピーした後

、あなたはこのコードが表示されます。

のTextViewの背景を変更し、このエラーを回避するために
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
style="?android:attr/spinnerDropDownItemStyle" 
android:singleLine="true" 
android:layout_width="match_parent" 
android:layout_height="?android:attr/dropdownListPreferredItemHeight" 
android:ellipsize="marquee" /> 

.../res/layout/simple_spinner_dropdown_item.xml:20: error: Error: Attribute is not public. (at 'layout_height' with value '?android:attr/dropdownListPreferredItemHeight').

あなたのコードは次のように検討する必要があります:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/spinnerText" 
style="@style/SpinnerTextViewItem" 
android:singleLine="true" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:ellipsize="marquee" /> 

主な変更点は、独自のスタイルを作成することです。あなたは、おそらくのstyles.xmlファイルを持っているので、これに似た新しいスタイルを追加します。

<style name="SpinnerTextViewItem" parent="@android:style/Widget.TextView" > 
    <item name="android:textStyle">normal</item> 
    <item name="android:background">@color/green</item> 
</style> 

あなたは「@色/緑」を介して色を設定したり、何でもすることができ、あなたのcolors.xmlファイルで何かを持っていると仮定すると、あなたが選んだ色(もちろん@android:color/...を使うことができます)。TextViewを変更するために追加することができる他の項目はもちろんです。

関連する問題