【问题标题】:LineBreaker in Response not display Properly响应中的换行符无法正确显示
【发布时间】:2016-06-27 06:30:25
【问题描述】:

我在返回响应中显示换行符时遇到问题。当我检查不同设备中的文本时,我得到了不同的符号。 我已经使用 gson 设置响应并使用 Volley 请求..

......
Gson gson=new Gson();
ItemsHolder = gson.fromJson(response.toString(),
                        ItemsHolder.class);
.......


......
 MenuItemsConfigurationListner configurationListner = new MenuItemsConfigurationListner();
        AuthonicateRequest jsonObjectRequest = new AuthonicateRequest(
                Request.Method.GET,
                url,
                (String) null,
                configurationListner,
                configurationListner
        );

        jsonObjectRequest.setTag(TAG);
        VolleySingleton.getVolleySingletonInstance().addToRequestQueue(
                jsonObjectRequest);
    ...............

标题

private class AuthonicateRequest extends JsonObjectRequest {
        public AuthonicateRequest(int method, String url, String requestBody, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) {
            super(method, url, requestBody, listener, errorListener);
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            return createBasicAuthHeader();
        }

        Map<String, String> createBasicAuthHeader() {
            Map<String, String> headerMap = new HashMap<String, String>();
            headerMap.put(IConstants.CONTENT_TYPE, IConstants.APPLICATION_JSON);
            return headerMap;
        }

    }

【问题讨论】:

  • 服务器的文本响应是什么?
  • (浓郁的奶油鸡汤配大蒜面包)
  • 当我在 Rest-client 上进行测试时,它只是忽略了该字符并显示为“(带有大蒜面包的浓郁奶油鸡汤)”
  • 是否有换行符或换行符?
  • not '\n' 我认为它破坏了字符。

标签: android android-volley gson


【解决方案1】:

如果来自服务器的响应返回包含换行符,这是删除它的方法,它用 '\n' android studio 支持换行符替换。

private class MyListener implements Response.Listener<JSONObject>, Response.ErrorListener {

            @Override
             public void onErrorResponse(VolleyError error) {
     Log.d(getTag() , error.toString());

                        }

             @Override
             public void onResponse(JSONObject response) {
     MyItem item = new Gson().fromGson(response.toString(),MyItem.class);

     String desc = null != item.getContent() ? item.getContent() : getEmptyString()
                 desc = desc.replace("\u2028", System.getProperty("line.separator"));
                 textViewItemDesc.setText(desc`enter code here`);
                         }
         }

【讨论】:

  • 我编辑并添加了解释,希望现在可以理解。 :)
【解决方案2】:

如果你在 TextView 中设置文本,你可以使用

Html.fromHtml(yourText);

它将基本的 html 标记转换为相应的 Span,您可以在 TextView 中使用生成的 Spanned 字符串。

textView.setText(Html.fromHtml(yourText));

【讨论】:

  • 我尝试了以下两种方式。但对我不起作用。字符串 desc = null != menuItem.getContent() ? menuItem.getContent() : getNAString(); textViewOrderItemDescription.setText(TextUtils.htmlEncode(desc)); textViewOrderItemDescription.setText(Html.fromHtml(desc));
猜你喜欢
  • 2020-11-10
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 2020-12-03
  • 2017-01-23
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多