我对API 8设备中的ListView
项有一个非常奇怪的错误。我有一个非常简单的文件对话框布局:
它在使用API 15的设备上运行良好。但带有API 8的HTC Desire将此对话框显示为:
所以我只能看到没有文件夹图标的元素(文件)文本。 我只能在滚动列表时看到文件夹文字!
当我使用setVisibility(View.INVISIBLE)
隐藏图标时,文字随处可见。
我的适配器的一些代码:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (viewBinder == null)
{
return super.getView(position, convertView, parent);
}
else
{
View view = convertView == null
? viewBinder.inflateView(position, mResource, mInflater, parent)
: convertView;
viewBinder.setViewValue(view, position, getItem(position));
return view;
}
}
public View inflateView(final int position, final int defResource,
final LayoutInflater inflater, final ViewGroup parent) {
final boolean checkable =
isCheckable((T) getListAdapter().getItem(position));
final View view = inflater.inflate(checkable ?
R.layout.filepicker_listitem_checkable :
R.layout.filepicker_listitem_dir,
parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.icon = view.findViewById(R.id.item_icon);
viewHolder.text =
(TextView) view.findViewById(android.R.id.text1);
if (checkable) {
viewHolder.checkbox = (CheckedTextView) view
.findViewById(android.R.id.text1);
} else {
viewHolder.checkbox = null;
}
view.setTag(viewHolder);
return view;
}
public void setViewValue(final View view, final int position,
final T data) {
if (view.getTag() == null) {
return;
}
((ViewHolder) view.getTag()).text.setText(getName(data));
((ViewHolder) view.getTag()).icon.setVisibility(isDir(position, data) ? View.VISIBLE : View.GONE);
if (((ViewHolder) view.getTag()).checkbox != null) {
((ViewHolder) view.getTag()).checkbox
.setChecked(checkedItems.get(position));
}
}
更新 filepicker_listitem_checkable.xml
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?android:listPreferredItemHeight"
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="?android:listPreferredItemHeight"
android:orientation="horizontal"
android:background="@drawable/selectable_background_filepickertheme">
<ImageView
android:id="@+id/item_icon"
android:src="@drawable/ic_collections_collection_light"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="match_parent"
tools:ignore="ContentDescription"
android:adjustViewBounds="true"/>
<CheckedTextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
style="?android:textAppearanceLarge"
android:checked="false"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:padding="8dp"
android:gravity="center_vertical"
android:id="@android:id/text1"
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"/>
filepicker_listitem_dir.xml:
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?android:listPreferredItemHeight"
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="?android:listPreferredItemHeight"
android:orientation="horizontal"
android:background="@drawable/selectable_background_filepickertheme">
<ImageView
android:id="@+id/item_icon"
android:src="@drawable/ic_collections_collection_light"
android:visibility="visible"
android:layout_width="wrap_content"
android:layout_height="match_parent"
tools:ignore="ContentDescription"
android:adjustViewBounds="true"/>
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
style="?android:textAppearanceLarge"
android:padding="8dp"
android:gravity="center_vertical"
android:id="@android:id/text1"
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
android:text="@string/name"/>
答案 0 :(得分:0)
在第一个示例中,文本看起来像是带有黑色背景的白色,而在第二个示例中,有一个没有tex的白色背景。我的猜测是文本在那里,但它是白色的,所以它是看不见的。尝试将TextView
颜色更改为黑色或任何您想要的颜色,看看是否有所不同。尝试将以下内容添加到TextView
布局:android:textColor="@color/black"
答案 1 :(得分:0)
除此我修复了这个错误!只需在列表项布局中将android:background="@android:color/transparent"
添加到TextView
和CheckedTextView
元素。