gpt4 book ai didi

android - 动态更改android首选项的widgetlayout资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:24 25 4
gpt4 key购买 nike

我在首选项屏幕中创建了一个首选项条目,如下所示:

<PreferenceScreen>
<Preference
android:title="title"
android:key="key"
android:widgetLayout="@layout/someview"/>
</PreferenceScreen>

我在这里设置了一个 widgetlayout 资源,它应该显示在首选项的右侧(就像复选框首选项的复选框一样)。我还可以在我的 PreferenceActivity.onCreate() 代码中设置此资源,如下所示:

Preference myPreference = findPreference("key");
myPreference.setWidgetLayoutResource(R.layout.someview);

这两种方法都很好,所以我可以在首选项的右侧看到我的资源。但是,我无法访问此资源 (someview) 以在运行时更改其属性。

无论是手动设置资源 ID、从资源中扩充它还是 findViewById 似乎都不起作用 - 我有无效的资源/资源 ID 未找到异常。似乎偏好 Activity 会在稍后的某个时间使资源膨胀。

有人遇到过同样的问题吗?关于如何在运行时更改 widgetlayout 资源的属性有什么想法吗?

这里有一个类似的问题,但是没有回答

最佳答案

我也遇到了同样的问题,我是这样试的:

1) 创建一个自定义的Preference 并覆盖onBindView():

public class ProgressBarPreference extends Preference {

private ProgressBar mProgressBar;

// constructors

@Override
protected void onBindView(View view) {
super.onBindView(view);
mProgressBar = (ProgressBar) view.findViewById(R.id.progressBar);
}

public ProgressBar getProgressBar() {
return mProgressBar;
}

}

2) 将此首选项添加到屏幕 xml:

<package.ProgressBarPreference
android:key="key"
android:summary="summary"
android:title="title"
android:widgetLayout="@layout/preference_widget_progressbar" />

preference_widget_progressbar.xml

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />

或调用setWidgetLayoutResource()

3) 当 onPreferenceTreeClick() 时获取 ProgressBar:

if (preference instanceof ProgressBarPreference) {
ProgressBar progressBar = ((ProgressBarPreference) preference).getProgressBar();
// TODO something
}

然而,一年多了!

关于android - 动态更改android首选项的widgetlayout资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9850536/

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