gpt4 book ai didi

android - Dialog.setTitle 不会显示全文

转载 作者:行者123 更新时间:2023-11-30 04:00:15 26 4
gpt4 key购买 nike

我一直在修改一个应用程序,它有一个包含很多项目的 ListView 。当我长按一个项目时,它会显示一个带有重命名、删除和其他选项的菜单。这个 contextMenu 有一个标题,使用从项目中获取的字符串,如固定文本和项目名称(我将它们收缩为一个字符串)。一切顺利。

但是,当我单击“重命名”时,它会显示一个对话框。对话框标题由 dialog.setTitle() 设置,使用与上面相同的字符串。但是当字符串长度足够小时,比如小于 20,那么它显示得很好。但是如果长度太长,比如30以上,则不会显示字符串,只显示没有项目名称的固定文本。

我跟踪了app,发现在设置title的时候,字符串是一样的。但表现不同。唯一的区别是前者我使用 ContextMenu.setHeaderTitle(),后者我使用 Dialog.setTitle()。我传递的参数总是相同的。

菜单标题代码如下:

  public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
AdapterContextMenuInfo mi = (AdapterContextMenuInfo) menuInfo;
menu.add(0, CONTEXT_MENU_RENAME, 0, getString(R.string.preset_rename));
menu.add(0, CONTEXT_MENU_DELETE, 0, getString(R.string.preset_delete));
mItemId = mi.position;
// super.onCreateContextMenu(menu, v, menuInfo);
// Log.d(LOGTAG,"mItemId is :" + mItemId);
String titleName = "" + getString(R.string.station_name)+ "" +getNameFromId(mItemId);
Log.e(LOGTAG, "1. getNameFromId = " + titleName);
menu.setHeaderTitle(titleName);
}

对话框标题代码如下:

 case DIALOG_RENAME_ID:
String titleName = "" + getString(R.string.station_name)+ "" + getNameFromId(mItemId);
Log.e(LOGTAG, "2. getNameFormId " + titleName);
mRenameDialog.setTitle(titleName); // Note: here set the dialog
final EditText editText = (EditText) mRenameDialog
.findViewById(R.id.name);
editText.setText(getNameFromId(mItemId));
Button bOk = (Button) mRenameDialog.findViewById(R.id.save);

bOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String rename = editText.getText().toString();
if (TextUtils.isEmpty(rename)) {
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, getString(R.string.station_name_empty),
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
} else {
saveStationName(mItemId,rename);
mRenameDialog.dismiss();
}
}
});
Button bCancel = (Button) mRenameDialog.findViewById(R.id.cancel);
bCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mRenameDialog.dismiss();
}
});
break;

有人知道原因吗?有人可以解释并修复它吗?

最佳答案

问题可能出在对话框或上下文菜单的设置上,这不是您的应用定义的,而是通用组件设置。 dialog 或 contextmenu 的标题是一个 textview,可以通过 singleline 属性设置。在这种情况下,可能是上下文菜单未设置 singleLine 属性,但对话框将 singleLine 属性设置为 true。你可以查看源代码的dialog_title.xml文件。

关于android - Dialog.setTitle 不会显示全文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12612841/

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