【问题标题】:Android Dialog Custom Layout for ArrayAdapterArrayAdapter 的 Android 对话框自定义布局
【发布时间】:2016-09-13 14:09:51
【问题描述】:

我有一个运行良好的对话框。但是,我想更改对话框的文本大小和样式。有没有不创建自定义对话框的快速方法?我尝试应用一个主题来做到这一点,但它只更改标题文本,而不是文本很大且对话框大小太大的单个元素。谢谢。

AlertDialog.Builder builderSingle = new AlertDialog.Builder(getActivity());

    builderSingle.setTitle("Select Item");
    final ArrayAdapter<String> arrayAdapter = listAllItems(getActivity());

    builderSingle.setNegativeButton(
        "cancel",
        new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

    builderSingle.setAdapter(
        arrayAdapter,
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String strName = arrayAdapter.getItem(which);
            }
        });
    builderSingle.show();

【问题讨论】:

  • 您正在创建Adapter,这意味着您可以指定所需的任何项目布局。
  • 如何使用简单的文本创建该布局并引用它(以及单个行)?
  • res/layout/ 中创建一个文件 - 例如,dialog_list_item.xml - 这只是一个 TextView,可以根据需要设置样式。然后将R.layout.dialog_list_item 作为ArrayAdapter 构造函数调用中的第二个参数传递。
  • 所以我需要创建一个自定义适配器?我尝试了 final ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.select_dialog_singlechoice);,但是你如何将我的列表 listAllItems 传递给 arrayadapter?
  • 您的listAllItems() 方法返回一个ArrayAdapter,因此必须在该方法中实例化一个。那就是您传递R.layout 而不是android.R.layout 的地方;无论您在哪里实例化 ArrayAdapter,而不是在您调用 listAllItems(getActivity()) 的地方。

标签: android dialog android-dialog customdialog


【解决方案1】:

试试这个

Listview lst_state;
TextView text_t ;
LayoutInflater inflater = mactivity.getLayoutInflater();
    View alertLayout = inflater.inflate(R.layout.listview, null);
    lst_state = (ListView) alertLayout.findViewById(R.id.listview_show_like_member_we);
    text_t = (TextView) alertLayout.findViewById(R.id.text_title);
    text_t.setText("State");
    lst_state.setAdapter(adapter_state);
    final AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setView(alertLayout);

    alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    final AlertDialog dialog = alert.create();
    lst_state.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            location_t_district.setText(arrayList_state.get(position).getStatename));
           dialog.dismiss();
        }
    });
    dialog.show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多