- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我在我的应用程序的几个部分中遇到了这个问题,但我会坚持一个:
我有一个首选项屏幕,可以更新整个应用程序的字体大小/字体。除了在我的联系人选择器上,它工作得很好。这是因为我创建它的方式:
private void populateContactList() {
Cursor cursor = getContacts();
fields = new String[] { ContactsContract.CommonDataKinds.Email.DATA };
adapter = new SimpleCursorAdapter(this, R.layout.entry, cursor, fields,
new int[] { R.id.contactEntryText });
mContactList.setAdapter(adapter);
}
其中 R.id.contactEntryText 与当前膨胀的 .xml 不同(它只是适应该布局)。
当然,我不能对其施加 setTextColor();
,因为当我尝试执行 findViewById
时,我得到一个空指针异常。
我将如何更改该布局上的字体样式以便我的 ListView 选择它?
最佳答案
与其仅使用 SimpleCursorAdapter,不如扩展它。然后在 getView 中,您可以更改 UI(文本颜色、字体大小或其他)。您可以通过适配器中的首选项管理器或 Activity 中的某处(onCreate ...)查找首选项,从而在设置 Activity 中设置颜色或大小。
您不能使用处理程序在 Activity 之间进行通信。
更新,抱歉不够清晰,您需要覆盖您的适配器,而不是(或不仅仅是)ListActivity。这是一些代码:
在您的 Activity 中:
private void populateContactList() {
Cursor cursor = getContacts();
fields = new String[] { ContactsContract.CommonDataKinds.Email.DATA };
adapter = new MyAdapter(this, R.layout.entry, cursor, fields,
new int[] { R.id.contactEntryText });
mContactList.setAdapter(adapter);
}
MyAdapter 是您自己的自定义适配器,它扩展了简单的游标适配器。如果您需要做的只是在每一行中找到一个 TextView 并更改一些属性(这是我的理解),请调用 super.getView 来获取每一行的 ViewGroup,然后您可以在该 ViewGroup 上调用 findViewById 来获取您的 TextView。一旦有了它,您就可以根据需要更改属性。下面只是最基本的实现大纲:
private static class MyAdapter extends SimpleCursorAdapter{
public MyAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
//you could use context to get PreferenceManager and find the
//colors/sizes set in your settings activity here
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewGroup rowView = (ViewGroup) super.getView(position, convertView, parent);
final TextView yourText = (TextView) rowView.findViewById(R.id.yourTextViewId);
yourText.setTextColor(...);
yourText.setTextSize(...);
}
}
关于android - 如何更改当前未激活的 View 的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9070372/
我是一名优秀的程序员,十分优秀!