编辑:我决定继续使用自定义 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" />
我用 ArrayAdapter
将 GridView
封装在 Dialog
中。
我想在单元格之间有某种边框(1dp 白色或黑色)。我能够完成此任务的唯一方法是编写自定义 xml 并使用它而不是 simple_list_item_1,这很好,除了这似乎会破坏 select 等上的项目突出显示,而且我似乎无法匹配默认值使用我的自定义 xml 来查看它。
问题:我是否可以找到并覆盖内置 xml 的配色方案?
我在下面的代码中做了一个小小的尝试,但不出所料,我得到了一个空指针异常。大多数搜索只是找到了有关自定义 xml 的建议,但为了快速更改字体颜色和字体背景颜色而执行所有这些操作似乎很奇怪。
为了以防万一,我会放入我的 xml。 如果有必要的话,至少使用 API 11。
谢谢大家,
迈克
-Java 代码 fragment -
...
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>
最佳答案
更改为
android:textAppearance="?android:attr/textAppearanceListItemSmall"
并且您的项目将具有自定义列表项 XML 的默认选择行为(理论上,尚未测试)。
编辑:尝试这样做,让列表项在您像 simple_list_item_1 一样点击时亮起:
在列表项中:
android:background="@drawable/clickable"
在可绘制文件夹中添加以下内容:
<?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>
关于java - Android - 我可以以编程方式覆盖 simple_list_item_1 颜色吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20850837/