2015-09-08 6 views
0

Использование Android Studio 1.3 - и на основе онлайн-учебника - я успешно запускаю это приложение на своем Android-телефоне, но я безуспешно пытался использовать более полудюжины различных конфигураций ListView и TextView, некоторые из этого превосходного сайта stackoverflow , чтобы попытаться получить пользовательский шрифт для отображения текста внутри XML-файла. Хотя я использую внедренный Android 4.3 для отладки и запуска, мне нужно будет в конечном итоге модифицировать и распространять это приложение с помощью специального шрифта, потому что шрифты oem на корневых и некорректированных телефонах и устройствах не имеют репертуара символов местного языка. Я уже сделал шрифты из шрифтов Google с открытым исходным кодом. Используя только MainActivity.java и row_site.xml ниже, возможно ли изменить текст для использования настраиваемого шрифта, который он появится, я бы разместил внутри и распространил его из папки/assets/fonts или было бы полезно, если бы Я включаю другие файлы из этого проекта?Возможно ли настроить пользовательский шрифт TextView для этого приложения?

MainActivity

package com.example.stacksites; 

import java.io.FileNotFoundException; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Typeface; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    private SitesAdapter mAdapter; 
    private ListView sitesList; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.i("StackSites", "OnCreate()"); 
     setContentView(R.layout.activity_main); 

     //Get reference to our ListView 
     sitesList = (ListView)findViewById(R.id.sitesList); 

     //Set the click listener to launch the browser when a row is clicked. 
     sitesList.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View v, int pos,long id) { 
       String url = mAdapter.getItem(pos).getLink(); 
       Intent i = new Intent(Intent.ACTION_VIEW); 
       i.setData(Uri.parse(url)); 
       startActivity(i); 

      } 

     }); 

     /* 
     * If network is available download the xml from the Internet. 
     * If not then try to use the local file from last time. 
     */ 
     if(isNetworkAvailable()){ 
      Log.i("StackSites", "starting download Task"); 
      SitesDownloadTask download = new SitesDownloadTask(); 
      download.execute(); 
     }else{ 
      mAdapter = new SitesAdapter(getApplicationContext(), -1, SitesXmlPullParser.getStackSitesFromFile(MainActivity.this)); 
      sitesList.setAdapter(mAdapter); 
     } 

    } 

    //Helper method to determine if Internet connection is available. 
    private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 

    /* 
    * AsyncTask that will download the xml file for us and store it locally. 
    * After the download is done we'll parse the local file. 
    */ 
    private class SitesDownloadTask extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      //Download the file 
      try { 
       Downloader.DownloadFromUrl("http://example.com/stacksites.xml", openFileOutput("StackSites.xml", Context.MODE_PRIVATE)); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result){ 
      //setup our Adapter and set it to the ListView. 
      mAdapter = new SitesAdapter(MainActivity.this, -1, SitesXmlPullParser.getStackSitesFromFile(MainActivity.this)); 
      sitesList.setAdapter(mAdapter); 
      Log.i("StackSites", "adapter size = "+ mAdapter.getCount()); 
     } 
    } 

} 

row_site.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp" > 

    <ProgressBar 
     android:id="@+id/progress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <ImageView 
     android:id="@+id/iconImg" 
     android:layout_width="80dp" 
     android:layout_height="80dp" 
     android:layout_marginRight="8dp" /> 

    <TextView 
     android:id="@+id/nameTxt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/iconImg" 
     android:textSize="16sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/aboutTxt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/iconImg" 
     android:textSize="12sp" 
     android:layout_below="@id/nameTxt" 
     /> 
+0

Проверьте https://plus.google.com/+LisaWrayZeitouni/posts/LTr5tX5M9mb, если помощь – Raghunandan

+0

Спасибо! Я посмотрел на сайт, на который вы щедро указали. В каком файле и где в нем я помещаю: "@BindingAdapter ({" bind: font "}) public static void setFont (TextView textView, String fontName) { textView.setTypeface (Typeface.createFromAsset (textView) .getContext(). getAssets(), "fonts /" + fontName)) } –

ответ

0

Вы можете поместить свой собственный шрифт в активы, то попробуйте использовать Typeface.createFromAsset()

Затем TextView.setTypeface() пропускание созданного шрифта

Смежные вопросы