编辑:我决定继续使用自定义xml进行小改动以使选择颜色有效。这并不能完全解决我的问题,但我不想花钱现在有更多时间。在下面发布我当前的xml,以防它帮助某人,并标记正确的答案,因为它帮助我几乎实现了我的目标。如果我使用?android:attr/selectableItemBackground
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:minHeight="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/black"
android:background="?android:attr/selectableItemBackground" />
我使用GridView
将Dialog
包裹在ArrayAdapter
中。
我希望在细胞之间有一些边界(1dp白色或黑色)。我能够完成此任务的唯一方法是编写一个自定义xml并使用它而不是simple_list_item_1,这样就可以了,除了这似乎打破了选择等项目突出显示,我似乎无法匹配默认值用我的自定义xml看看它。
问题:我是否可以找到并覆盖内置xml的配色方案?
我在下面的代码中做了一个小小的尝试,但不出所料我得到了一个空指针异常。大多数搜索只是提出了自定义xml的建议,但为快速字体颜色和字体背景颜色变化做这一切似乎很奇怪。
为了以防万一,我会投入我的xmls。 如果重要,请使用最低API 11。
谢谢你们,
麦克
-Java Snippet -
...
public void gridDialog(View v) {
String[] letters = new String[] {
"A", "B", "C", "D", "E"};
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.grid_pop);
GridView mGrid = (GridView) dialog.findViewById(R.id.fret_grid);
TextView tv = (TextView) findViewById(android.R.id.text1);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.BLACK);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, letters);
//ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_item, letters);
mGrid.setAdapter(adapter);
mGrid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Toast.makeText(getApplicationContext(), ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
// Do Stuff
dialog.dismiss();
}
});
dialog.show();
}
...
-my_item.xml -
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:gravity="center_vertical|center_horizontal"
android:minHeight="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@android:color/black" />
-grid_pop.xml -
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fret_grid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/black"
android:columnWidth="55dp"
android:gravity="center"
android:horizontalSpacing="1dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="1dp" >
</GridView>
答案 0 :(得分:0)
更改为
android:textAppearance="?android:attr/textAppearanceListItemSmall"
并且您的项目将具有自定义列表项XML的默认选择行为(理论,尚未测试)。
编辑:点击它时,尝试使列表项显示为simple_list_item_1:
在列表项中:
android:background="@drawable/clickable"
在drawable文件夹中添加:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@android:drawable/list_selector_background" />
</selector>