Android Studio 1.4
compile 'com.android.support:appcompat-v7:22.2.1'
您好,
我创建了以下“材质设计”对话框。但EditText框并不遵循设计理念。因为它与宽度匹配父级。我需要EditText来获取用户输入。我不想使用任何库,因为我宁愿本地使用它。
这是我正在使用的风格:
<style name="InvitationDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:background">#5FA3D0</item>
</style>
以下是创建对话框的代码:
final AlertDialog builder = new AlertDialog.Builder(getActivity(), R.style.InvitationDialog)
.setPositiveButton(R.string.invitation_accept, null)
.setNegativeButton(R.string.invitation_decline, null)
.create();
final EditText etNickName = new EditText(getActivity());
builder.setView(etNickName);
builder.setTitle(R.string.accept_invitation);
final String username = "steve";
final String roomName = "happy room";
builder.setMessage(username + " has invited you to join " + roomName + " for lots of fun chatting");
builder.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
final Button btnAccept = builder.getButton(AlertDialog.BUTTON_POSITIVE);
btnAccept.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(etNickName.getText().toString().isEmpty()) {
Toast.makeText(getActivity(), "Enter a user name", Toast.LENGTH_SHORT).show();
}
else {
Log.d(TAG, "You have entered: " + etNickName.getText().toString());
builder.dismiss();
}
}
});
final Button btnDecline = builder.getButton(DialogInterface.BUTTON_NEGATIVE);
btnDecline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Invitation declined");
builder.dismiss();
}
});
}
});
/* Show the dialog */
builder.show();
非常感谢任何建议,
答案 0 :(得分:1)
据我所知,最大的问题是利润率。为此,您可以在对话框的布局文件中添加一些属性。例如:
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tvInvitationText"
android:layout_marginTop="24dp"
android:layout_marginLeft="24dp"
android:layout_marginRight="24dp"
android:lines="1"
android:maxLines="1"
android:inputType="text"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:hint="@string/sEnterYourName" >
<requestFocus />
</EditText>