- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想在 android edittextpreference 上放一个按钮。我创建了一个自定义的 editextpreference:
public class EditTextPreferenceWithButton extends EditTextPreference {
private Context context;
public EditTextPreferenceWithButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context=context;
}
public EditTextPreferenceWithButton(Context context, AttributeSet attrs) {
super(context, attrs);
this.context=context;
}
public EditTextPreferenceWithButton(Context context) {
super(context);
this.context=context;
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
view.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
final EditText editText = (EditText)view.findViewById(android.R.id.edit);
ViewGroup vg = (ViewGroup)editText.getParent();
Button button = new Button(context);
vg.addView(button,ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
以这种方式,按钮显示在编辑文本下方,但我希望它在编辑文本旁边,如下所示:
|编辑文本| |按钮|
请帮帮我!谢谢
最佳答案
我会创建一个 DialogPreference
的子类。
class EditTextDialogPreference extends DialogPreference {
//Layout Fields
private final LinearLayout layout = new LinearLayout(this.getContext());
private final EditText editText = new EditText(this.getContext());
private final Button button = new Button(this.getContext());
//Called when addPreferencesFromResource() is called. Initializes basic paramaters
public EditTextDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setPersistent(true);
button.setText("Button");
layout.setOrientation(LinearLayout.HORIZONTAL);
}
//Create the Dialog view
@Override
protected View onCreateDialogView() {
layout.addView(editText);
layout.addView(button);
return parentLayout;
}
//Attach persisted values to Dialog
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
editText.setText(getPersistedString("EditText"), TextView.BufferType.NORMAL);
}
//persist values and disassemble views
@Override
protected void onDialogClosed(boolean positiveresult) {
super.onDialogClosed(positiveresult);
if (positiveresult && shouldPersist()) {
persistString(editText.getText().toString());
}
((ViewGroup) editText.getParent()).removeView(editText);
((ViewGroup) button.getParent()).removeView(button);
((ViewGroup) layout.getParent()).removeView(layout);
notifyChanged();
}
}
我假设您要将值保留在 EditText
中,而我将按钮的操作留给您。参见 this post有关扩展 DialogPreference
的更多信息。
为了将 key 放入 SharedPreferences
,请将以下内容放入您的 XML 中:
<com.yourpackage.EditTextDialogPreference
android:key="Your Key"
android:persistent="true"/>
关于android - 带按钮的 EditTextPreference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11286544/
我使用 Android 模板创建了一个设置 Activity 。首先,一切正常,但现在我想从 EditTextPreference 获取 String。但是当我开始运行它时,它因以下错误而崩溃: ja
我想自定义我的EditTextPreference。我的目标是格式化标题文本。这是我的 prefs.xml 的相关部分 这是背后的代码: public class FormattedEditText
我的偏好 fragment 中有一个 EditTextPrefernce。我在 XML 中将其设置为 androd:numeric="integer"。好的,这行得通……但问题是用户必须在此首选项中插
我是完成数字偏好验证例程的一小步。 我将 EditTextPrefernce OK 按钮替换为 ClickListener,以防止在条目不是数字时离开对话框。 我使用 TextWatcher.afte
我正在扩展 EditTextPreference 类,并希望在显示对话框时在某些情况下禁用其中一个默认按钮。 我从这个答案中得到了提示:EditTextPreference Disable Butto
我正在开发一个使用 Preference Fragment 的 Android 应用程序。在那个 Preference(For Settings) fragment 中,我有两个 EditTextPr
我想在摘要字段中显示偏好值。这accepted answer显示了如何为 ListPreference 执行此操作。 对于布局中的 EditTextPrefernce 是否有类似的方法而不是扩展类?
我希望 EditTextPreference 只接受 6000 到 65536 之间的值,我该怎么做?谢谢! 顺便说一句,代码 A 不起作用,我无法在 EditTextPreference 的编辑框中
有什么方法可以在 PreferenceActivity 之外制作类似 EditTextPreference 中的对话框?假设我希望在我的主要 Activity 中单击按钮时显示此对话框。 我尝试构建一
当我点击菜单项时,我有这段代码来设置 EditTextPreference: case R.id.prochain_vidange: settings = PreferenceMa
有没有办法让 EditTextPreference 单行?我认为默认情况下没有属性可以做到这一点。是否有必要重写对象?有人做过这个吗? 最佳答案 也许 android:singleLine="true
我想自定义我的 EditTextPreference,所以我在 EditTextPreference 的左侧添加了一个 TextView。 这是我的代码: 这就是我在申请中得到的: 我想自定义我的
我想要一个 EditTextPreference,如果 EditText 字段中没有文本,它将禁用 OK 按钮。我创建了一个自定义的 EditTextPreference 类,我能够获取 EditTe
在相关主题中寻找问题的解决方案大约 1 小时后,我决定公开我的案例。就是这样:每次我尝试打开 PreferenceActivity 时都会遇到 InflateException。 日志 E/Andro
我想在 android edittextpreference 上放一个按钮。我创建了一个自定义的 editextpreference: public class EditTextPreferenceW
我正在进行设置 Activity ,我想让用户选择声音通知。我用这个来做到这一点: EditTextPreference dataPref = (EditTextPreference) findPre
我想在打开首选项屏幕时打开 EditTextPreference。我试试 mLabel = (EditTextPreference) findPreference("labelKey"); mLabe
这主要是我的一个小毛病,但是默认行为或 EditTextPreferences 是将光标放在字符串的开头,这让我非常恼火。这对我来说毫无意义。在人类已知的几乎任何其他界面(很好,我)中,关注文本字段会
我正在尝试设置在我的 SettingsActivity 中选择 EditTextPreference 时出现的对话框的样式。到目前为止,我已经能够通过以下方式更改两个按钮和背景的颜色: dia
我创建了一个 EditTextPreference,现在我想从任何其他 Activity 中获取值。我一直在尝试很多东西,但我无法让它工作。这个值存储在哪里?我怎样才能找回它? 编辑:我想从不同的 A
我是一名优秀的程序员,十分优秀!