Android 自定义首选项-按钮不可单击
我正在设置屏幕上工作,我正在使用Android的首选API来构建界面。 其中一个首选项是按钮,我通过向首选项添加自定义布局来实现。它可以工作-按钮按我想要的方式显示,但问题是当设置为On PreferenceClickListener时,什么也没有发生。它没有被触发 我尝试在按钮布局根目录中添加BeforeDescents,但没有成功。还试图添加可聚焦假按钮,但仍然没有运气 任何人都可以分享一些技巧,我可以如何使首选按钮的反应?Android 自定义首选项-按钮不可单击,android,android-fragments,preference,Android,Android Fragments,Preference,我正在设置屏幕上工作,我正在使用Android的首选API来构建界面。 其中一个首选项是按钮,我通过向首选项添加自定义布局来实现。它可以工作-按钮按我想要的方式显示,但问题是当设置为On PreferenceClickListener时,什么也没有发生。它没有被触发 我尝试在按钮布局根目录中添加BeforeDescents,但没有成功。还试图添加可聚焦假按钮,但仍然没有运气 任何人都可以分享一些技巧,我可以如何使首选按钮的反应? 谢谢 我会使用类似于下面代码的东西来实现这一点: @Overrid
谢谢 我会使用类似于下面代码的东西来实现这一点:
@Override
protected View onCreateView (ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View customRow = inflater.inflate(R.layout.preferences_station_list_row, null);
((ImageButton) customRow.findViewById(R.id.pref_delete_station)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//perform whatever you need to button to do here.
}
});
customRow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(null);
}
});
customRow.setClickable(true);
return customRow;
}
这是否解决了您的问题?首选项单击是在单击首选项时触发的,而不是在单击按钮时触发的。如果要捕获按钮单击,则需要在按钮本身上设置OnClickListener。问题是检索膨胀的按钮,因为首选项类没有findViewById方法或任何类似的方法。我是这样做的:
公共类CustomPreference扩展了首选项{
公共自定义首选项(上下文){
超级(上下文);
}
公共自定义首选项(上下文、属性集属性){
超级(上下文,attrs);
}
公共自定义首选项(上下文上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
}
@凌驾
受保护的视图onCreateView(视图组父级){
视图首选项视图=super.onCreateView(父级);
setOnClickListener(首选项视图);
返回优先视图;
}
私有void setOnClickListener(视图首选项视图){
if(preferenceView!=null&&preferenceView实例视图组){
ViewGroup widgetFrameView=((ViewGroup)preferenceView.findViewById(android.R.id.widget_frame));
if(widgetFrameView!=null){
//找到按钮
按钮按钮=空;
int count=widgetFrameView.getChildCount();
for(int i=0;i
这将替换xml文件中的首选项:
<yourpackage.CustomPreference
android:key="your_id"
android:title="@string/your_title"
android:summary="@string/your_summary"/>
重写“”from方法,并确保您的自定义布局没有以下内容:
android:clickable="true"
您不需要任何其他特殊功能,但如果您的布局包含android:clickable=“true”视图,则会完全搞乱它。您是否检查了答案?我不知道这有什么关系?“您必须注册首选项ClickListener每个个人首选项somePreference.SetonPreference ClickListener(this);”我也会建议张贴你的代码,我正在这样做。我已经说过我正在设置此首选项的首选项ClickListener,但是当单击按钮时,什么都没有发生。在调用侦听器启用按钮之前,您是否尝试过<代码>myButton.setEnabled(真)代码>
android:clickable="true"