[解決済み] Android ListViewの文字色
質問
ListViewのtextColorを黒にしたいのですが、背景を白にしているため、どうすればいいですか?
以下は私のMailActivityです。
public class MailActivity extends ListActivity {
String[] listItems = { "Compose", "Inbox", "Drafts", "Sent" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mails);
setListAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_1, listItems));
}
}
と私のXML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Empty set"
android:textColor="#000000" />
</LinearLayout>
背景は白になるのですが、前景を黒にする場所がよくわかりません。xmlの中で試してみましたが、役に立たないようです。
解決方法を教えてください。
OK、ここではっきりさせておくべきことがあります。
- xml ファイルで設定している背景色は、定義しようとしている ListItems の色ではなく、アクティビティの色です。
- 各リストアイテムは独自のレイアウトファイルを持っており、リストアイテムに複雑なレイアウトを使用している場合は、そのファイルを渡すか、または膨らませる必要があります。
コードサンプルを使って説明します。
****ListItemsのレイアウトから始めましょう**。
に保存してください。
res/layout
フォルダに、 **list_black_text.xml と記述します。
<?xml version="1.0" encoding="utf-8"?>
<!-- Definig a container for you List Item-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Defining where should text be placed. You set you text color here-->
<TextView
android:id="@+id/list_content"
android:textColor="#000000"
android:gravity="center"
android:text="sample"
android:layout_margin="4dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
さて、シンプルなレイアウトで
TextView
を正確には TextViewを使用するには、TextViewにidを割り当てる必要があります。
さて、画面/アクティビティ/チーフレイアウトの話になりますが、画面の背景を定義するために
android:background
属性があります。そこにTextViewも定義されていますが、コンテンツやリスト項目を定義しようとしているのではと思いますが、それは全く必要ありません。
編集したレイアウトはこちらです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF">
<ListView
android:id="@android:id/list" android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<!-- REMOVED TEXT VIEW, AND KEEPING BACKGROUND WHITE -->
</LinearLayout>
そして最後に、最も重要なのは、アダプターを設定することです。
setListAdapter(new ArrayAdapter<String>(
this, R.layout.list_black_text, R.id.list_content, listItems));
アダプタに渡しているレイアウトリソースに注目してください。
R.layout.list_black_text
と
R.id.list_content
で、これが宣言したTextView IDです。また、ArrayAdapterは汎用性があるので、String型に変更しています。
これですべて説明できたと思います。もしあなたが同意すれば、私の答えに受理マークを付けてください。
面倒だけど、手っ取り早い良い方法
また、複雑なレイアウト定義などを進めない場合は、クイックフィックスで行うことも可能です。
アダプタのインスタンスを作成する際に、この処理を行うためのインナークラスを宣言します。
ArrayAdapter<String> adapter=new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1, listItems){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view =super.getView(position, convertView, parent);
TextView textView=(TextView) view.findViewById(android.R.id.text1);
/*YOUR CHOICE OF COLOR*/
textView.setTextColor(Color.BLUE);
return view;
}
};
/*SET THE ADAPTER TO LISTVIEW*/
setListAdapter(adapter);
関連
-
[解決済み] カスタムアダプタからnotifyDataSetChangeが機能しない
-
[解決済み】findViewByIDがnullを返す。
-
[解決済み] 複数のデバイスを接続しているときにADB Shellを使用するには?error: more than one device and emulator "で失敗します。
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ユーザーが拒否する可能性のあるパーミッションが必要なコール
-
[解決済み] 設定 ':classpath' の依存関係をすべて解決できなかった。
-
[解決済み】apkインストール時のINSTALL_FAILED_NO_MATCHING_ABIS
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりませんでした
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] 起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりませんでした
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] setBackgroundDrawable() 非推奨