kkg*_*ery 7 android preferenceactivity android-preferences
我在首选项屏幕中创建了一个首选项,如下所示:
<PreferenceScreen>
<Preference
android:title="title"
android:key="key"
android:widgetLayout="@layout/someview"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
在这里,我设置了一个widgetlayout资源,该资源应显示在首选项的右侧(如复选框首选项的复选框).我也可以在我的代码中设置这个资源PreferenceActivity.onCreate():
Preference myPreference = findPreference("key");
myPreference.setWidgetLayoutResource(R.layout.someview);
Run Code Online (Sandbox Code Playgroud)
这两种方法都可以正常工作,因此我可以在首选项的右侧看到我的资源.但是,我无法访问此资源(someview)以在运行时更改其属性.
既没有手动设置资源ID,也没有从资源中膨胀或findViewById似乎工作 - 我找不到资源/资源ID无效的异常.似乎偏好活动稍后会使资源膨胀.
有没有人遇到同样的问题?有关如何widgetlayout在运行时更改资源属性的任何想法?
这是一个类似的问题,但没有回答
小智 13
我似乎有同样的问题,我尝试这样:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
<package.ProgressBarPreference
android:key="key"
android:summary="summary"
android:title="title"
android:widgetLayout="@layout/preference_widget_progressbar" />
Run Code Online (Sandbox Code Playgroud)
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" />
Run Code Online (Sandbox Code Playgroud)
或者打电话setWidgetLayoutResource().
onPreferenceTreeClick():if (preference instanceof ProgressBarPreference) {
ProgressBar progressBar = ((ProgressBarPreference) preference).getProgressBar();
// TODO something
}
Run Code Online (Sandbox Code Playgroud)
但是,一年多了!
| 归档时间: |
|
| 查看次数: |
6160 次 |
| 最近记录: |