首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在我的Android应用程序中显示Reginonal语言(Gurumukhi

我想在我的Android应用程序中显示Reginonal语言(Gurumukhi
EN

Stack Overflow用户
提问于 2012-06-28 14:07:19
回答 3查看 2.1K关注 0票数 6

我想要如下图所示的输出

这是一本锡克教徒的圣书,它使用区域字体(Gurumukhi),我想为这个文本制作一个xml文件,以便在我的应用程序中使用xml解析来显示。但问题是,当我将此字体粘贴到xml文件中时,它会转换为一些字母和符号,如下所示

代码语言:javascript
复制
jpujI swihb
<> siq nwmu krqw purKu inrBau inrvYru
Akwl mUriq AjUnI sYBM gur pRswid ]
] jpu ]
Awid scu jugwid scu ]
hY BI scu nwnk hosI BI scu ]1]
socY soic n hoveI jy socI lK vwr ]
cupY cup n hoveI jy lwie rhw ilv qwr ]
BuiKAw BuK n auqrI jy bMnw purIAw Bwr ]
shs isAwxpw lK hoih q iek n clY nwil ]
ikv sicAwrw hoeIAY ikv kUVY qutY pwil ]
hukim rjweI clxw nwnk iliKAw nwil ]1]
hukmI hovin Awkwr hukmu n kihAw jweI ]
hukmI hovin

我已经在资源文件夹中放置了一个Gurumukhi字体文件,并使用下面的代码,它工作得很好

代码语言:javascript
复制
Typeface tf = Typeface.createFromAsset(getAssets(),
                "fonts/bulara_5.ttf");
        textView = (TextView) findViewById(R.id.textView1);
        textView.setTypeface(tf);
        textView.setMovementMethod(new ScrollingMovementMethod());
        textView.setText(" <>siq nwmu krqw purKu inrBau inrvYru")

这样,该文本视图中的文本就会转换为Gurumukhi,而不是How can i create my Xml file for this type of text in it。或者Give me some Good Suggestion that which way is better to work on this type of app and handle the text。我必须在一个应用程序中显示4-5圣书,每个有20-25页。任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-28 16:09:06

我对xml做了一些更改,但请记住,这些更改是必需的。

我已经在资产文件夹中创建了一个data.xml,xml如下所示

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
    <book1>
    <page1>&#60;&#62; siq nwmu krqw purKu inrBau inrvYru
    Akwl mUriq AjUnI sYBM gur pRswid ]
                    ] jpu ]
             Awid scu jugwid scu ]
      hY BI scu nwnk hosI BI scu ]1]
     socY soic n hoveI jy socI lK vwr ]
    cupY cup n hoveI jy lwie rhw ilv qwr ]
    BuiKAw BuK n auqrI jy bMnw purIAw Bwr ]
   shs isAwxpw lK hoih q iek n clY nwil ]
   ikv sicAwrw hoeIAY ikv kUVY qutY pwil ]
   hukim rjweI clxw nwnk iliKAw nwil ]1]
  hukmI hovin Awkwr hukmu n kihAw jweI ]
  hukmI hovin jIA hukim imlY vifAweI ]
  hukmI auqmu nIcu hukim iliK duK suK pweIAih ]
  ieknw hukmI bKsIs ieik hukmI sdw BvweIAih ]
  hukmY AMdir sBu ko bwhir hukm n koie ]
  nwnk hukmY jy buJY q haumY khY n koie ]2]
  gwvY ko qwxu hovY iksY qwxu ]</page1>
  </book1>

然后查看我的StudyParser.class,如下所示

代码语言:javascript
复制
  import java.io.BufferedInputStream;
  import java.io.ByteArrayOutputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.io.StringReader;
  import java.io.UnsupportedEncodingException;
  import java.net.MalformedURLException;

  import javax.xml.parsers.DocumentBuilder;
  import javax.xml.parsers.DocumentBuilderFactory;
  import javax.xml.parsers.ParserConfigurationException;

  import org.apache.http.HttpEntity;
  import org.apache.http.HttpResponse;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.util.EntityUtils;
  import org.w3c.dom.Document;
  import org.w3c.dom.Element;
  import org.w3c.dom.Node;
  import org.w3c.dom.NodeList;
  import org.xml.sax.InputSource;
  import org.xml.sax.SAXException;



  public class StudyParser {
public StudyParser() {

}

public final static Document XMLfromString(String xml){
     Document doc = null;

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setCoalescing(true);
            try {

          DocumentBuilder db = dbf.newDocumentBuilder();

          InputSource is = new InputSource();
              is.setCharacterStream(new StringReader(xml));
              doc = db.parse(is); 

        } catch (ParserConfigurationException e) {
          System.out.println("XML parse error: " + e.getMessage());
          return null;
        } catch (SAXException e) {
          System.out.println("Wrong XML file structure: " + e.getMessage());
                return null;
        } catch (IOException e) {
          System.out.println("I/O exeption: " + e.getMessage());
          return null;
        }

            return doc;

  }
public static String getXMLstring(String xml){   
      String line = null;

      try {

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(xml);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        line = EntityUtils.toString(httpEntity);

      } catch (UnsupportedEncodingException e) {
        line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
      } catch (MalformedURLException e) {
        line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
      } catch (IOException e) {
        line = "<results status=\"error\"><msg>Can't connect to server</msg></results>";
      }

      return line;

  }
public static String getXML(InputStream is)throws IOException {

    BufferedInputStream bis = new BufferedInputStream(is);
    ByteArrayOutputStream buf = new ByteArrayOutputStream();
    int result = bis.read();
    while(result != -1) {
      byte b = (byte)result;
      buf.write(b);
      result = bis.read();
    }        
    return buf.toString();
}
public final static String getElementValue( Node elem ) {
       Node kid;
       if( elem != null){
           if (elem.hasChildNodes()){
               for( kid = elem.getFirstChild(); kid != null; kid = kid.getNextSibling() ){
                   if( kid.getNodeType() == Node.TEXT_NODE  ){
                       return kid.getNodeValue();
                   }

               }
           }
       }
       return "";
   }
 public static int numResults(Document doc){    
        Node results = doc.getDocumentElement();
        int res = -1;

        try{
          res = Integer.valueOf(results.getAttributes().getNamedItem("Categories").getNodeValue());
        }catch(Exception e ){
          res = -1;
        }

        return res;
      }

      public static String getValue(Element item, String str) {    
        NodeList n = item.getElementsByTagName(str);    
        return StudyParser.getElementValue(n.item(0));
      }


}

在我的活动中的代码如下所示

代码语言:javascript
复制
 TextView txt;
 try{
 txt = (TextView)findViewById(R.id.tv); 
 String   xml= StudyParser.getXML(getAssets().open("data.xml"));    

   Document doc = StudyParser.XMLfromString(xml);
  NodeList n = doc.getElementsByTagName("book1");
 Element eid = (Element) n.item(0);
String Js=StudyParser.getValue(eid, "page1");
 Typeface tf = Typeface.createFromAsset(getAssets(),"bulara_5.ttf");
 txt.setTypeface(tf);
 txt.setText(Js);
   }catch(Exception e){
 Log.e("error",e.toString());
   }
票数 4
EN

Stack Overflow用户

发布于 2012-06-28 14:42:56

由于您希望通过使用,因此您的layout.xml应该如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >

    <com.nannu.NanTV
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/book"
        android:textAppearance="?android:attr/textAppearanceLarge" 

        />

</LinearLayout>

和string.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>


    <string name="book"><![CDATA[jpujI swihb\\<> siq nwmu krqw purKu inrBau inrvYruAkwl mUriq AjUnI sYBM gur pRswid ]] jpu ]Awid scu jugwid scu ]hY BI scu nwnk hosI BI scu ]1]socY soic n hoveI jy socI lK vwr ]cupY cup n hoveI jy lwie rhw ilv qwr ]BuiKAw BuK n auqrI jy bMnw purIAw Bwr ]shs isAwxpw lK hoih q iek n clY nwil ]ikv sicAwrw hoeIAY ikv kUVY qutY pwil ]hukim rjweI clxw nwnk iliKAw nwil ]1]hukmI hovin Awkwr hukmu n kihAw jweI ]hukmI hovin]]></string>
</resources>

你好,扩展你的文本视图

代码语言:javascript
复制
package com.nannu;

import android.content.Context;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.widget.TextView;

public class NanTV extends TextView{

    private Context c;
    public NanTV(Context c) {
        super(c);
        this.c = c;
        Typeface tfs = Typeface.createFromAsset(c.getAssets(),
                "font/bulara_5.ttf");
        setTypeface(tfs);

    }
    public NanTV(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.c = context;
        Typeface tfs = Typeface.createFromAsset(c.getAssets(),
                "font/bulara_5.ttf");
        setTypeface(tfs);
        // TODO Auto-generated constructor stub
    }

    public NanTV(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.c = context;
        Typeface tfs = Typeface.createFromAsset(c.getAssets(),
                "font/bulara_5.ttf");
        setTypeface(tfs);

    }


}

现在你的layout.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
     >

    <com.nannu.NanTV
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" 

        />

</LinearLayout>

活动

代码语言:javascript
复制
package com.nannu;

import android.app.Activity;
import android.os.Bundle;

public class NanDempoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        NanTV nan = (NanTV)findViewById(R.id.textView1);
        nan.setText("jpujI swihb<> siq nwmu krqw purKu inrBau inrvYruAkwl mUriq AjUnI sYBM gur pRswid ]] jpu ]Awid scu jugwid scu ]hY BI scu nwnk hosI BI scu ]1]socY soic n hoveI jy socI lK vwr ]cupY cup n hoveI jy lwie rhw ilv qwr ]BuiKAw BuK n auqrI jy bMnw purIAw Bwr ]shs isAwxpw lK hoih q iek n clY nwil ]ikv sicAwrw hoeIAY ikv kUVY qutY pwil ]hukim rjweI clxw nwnk iliKAw nwil ]1]hukmI hovin Awkwr hukmu n kihAw jweI ]hukmI hovin");
    }
}

票数 4
EN

Stack Overflow用户

发布于 2012-06-28 14:12:49

您似乎正在尝试对Gurmukhi字母使用私有编码的8位字体,即代码编号范围为0..255的字体,其中每个数字根据某种与字体相关的约定映射到一个字符,而不是通过任何标准编码。

请考虑改用Unicode (UTF-8)和Unicode编码的字体。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11238909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档