HoloLight テーマを使用して、アプリケーションに非常に単純な ListActivity があります。ListView にデータが取り込まれていますが、項目が強調表示されている場合にのみテキストが表示されます。これを修正するにはどうすればよいですか?なぜそれが起こるのですか?
編集:明確にする。これを各リスト ビューでローカルに修正するのではなく、グローバルなソリューションを見つけたいと考えています。
いくつかの良い答えがありました。しかし、それらのほとんどには、不要な作業である新しいアダプターの作成が含まれていました。最も重要なことは、xmlに希望の色を設定する必要があるということです。simple_list_item_2のソースを使用して新しいレイアウトを作成し、テキストの色を変更する行を追加しました。テストされ、動作します。
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
* Copyright (C) 2006-2007 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:mode="twoLine"
android:paddingBottom="2dip"
android:paddingTop="2dip" >
<TextView
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:textColor="?android:attr/textColorPrimaryInverseDisableOnly"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@android:id/text2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@android:id/text1"
android:layout_below="@android:id/text1"
android:textAppearance="?android:attr/textAppearanceSmall" />
</TwoLineListItem>
ListView にアイテムを表示するために使用できる独自のアダプターを作成してみてください。
ここでさらに詳しい情報を見つけることができます: http://www.vogella.com/articles/AndroidListView/article.htmlしかし、インターネット上には他にも多くのサイトがあり、適切な説明が得られます (Google はあなたの友達です)。
アップデート:
カスタム レイアウトをロードするカスタム アダプターの例を次に示します。これをすべてのリストで使用する限り、同じように動作し、同じように見えます。機能させるには、必要なものを定義するだけです。表示するオブジェクトと使用しているオブジェクトのタイプ。
カスタムアダプター:
public class YourAdapter extends ArrayAdapter<String> {
private final Context context;
private List<Object> YourObjects;
public YourAdapter(Context context, List<Object> YourObjects, List<String> headings) {
super(context, R.layout.list_view_stories, headings);
this.context = context;
this.YourObjects = null != YourObjects ? YourObjects : new ArrayList<Object>();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
/*Setup the things need it to inflate each row*/
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_view_stories, parent, false);
/*Retrieves the views for the heading and title from the layout*/
TextView heading = (TextView) rowView.findViewById(R.id.title);
TextView summary = (TextView) rowView.findViewById(R.id.summary);
heading.setText(YourObjects.get(position).getHeading());
summary.setText(YourObjects.get(position).getSummary());
/*Returns the row with the content placed*/
return rowView;
}
}
カスタムレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dip"
android:background="@color/ligth_blue" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/heading"
android:textColor="@color/black"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/summary"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/summary"
android:textColor="@color/white"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
レイアウト プロパティで色を変更します。
android:textColor="@color/black"
次に、値フォルダーにリソースを作成します。これは、私が使用する色の例です。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#000000</color>
<color name="white">#ffffff</color>
<color name="gray">#909090</color>
<color name="ligth_blue">#2E9AFE</color>
</resources>
カスタム ListView を使用します。各行を独自の方法でカスタマイズします。リストビューの例はたくさんあります。http://www.ezylearning.com/tutorial.aspx?tid=1763429 . こちらのリンクもご覧ください。http://codehenge.net/blog/2011/05/customizing-android-listview-item-layout/