gpt4 book ai didi

android - 带按钮的 EditTextPreference

转载 作者:搜寻专家 更新时间:2023-11-01 07:35:57 27 4
gpt4 key购买 nike

我想在 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/

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