gpt4 book ai didi

android - 如何更改当前未激活的 View 的布局?

转载 作者:行者123 更新时间:2023-11-29 22:13:22 25 4
gpt4 key购买 nike

所以我在我的应用程序的几个部分中遇到了这个问题,但我会坚持一个:

我有一个首选项屏幕,可以更新整个应用程序的字体大小/字体。除了在我的联系人选择器上,它工作得很好。这是因为我创建它的方式:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com