动态更改Android首选项的widgetlayout资源

动态更改Android首选项的widgetlayout资源,第1张

概述我在首选项屏幕中创建了一个首选项,如下所示: <PreferenceScreen> <Preference android:title="title" android:key="key" android:widgetLayout="@layout/someview"/></PreferenceScreen> 在这里,我设置了一个widget 我在首选项屏幕中创建了一个首选项,如下所示:
<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未找到异常.似乎偏好活动稍后会使资源膨胀.

有没有人遇到同样的问题?有关如何在运行时更改Widgetlayout资源属性的任何想法?

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

> [android-developers] problem accessing widget in Preference widgetLayout

解决方法 我似乎有同样的问题,我尝试这样:

1)创建自定义首选项并覆盖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首选项的widgetlayout资源全部内容,希望文章能够帮你解决动态更改Android首选项的widgetlayout资源所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1137746.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存