对话框忽略字体颜色Html标记

时间:2013-06-08 21:06:15

标签: java android html customdialog

我在一个活动中有多个对话框,每个东西都运行完美,对话框文字 可以

通过添加html标记从( string.xml )完全自定义。

活动代码:

public class MyDay extends Activity {
 final Context context = this;
 private Button button;
 TextView tv1,tv2,tv3,tv4;
 String day;

 @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.Layou
      tParams.FLAG_FULLSCREEN); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Boolean customTitleSupported =       
     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);     
setContentView(R.layout.day);  

if (customTitleSupported) {          
 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title);  
 } 

   initializeTextViews();
 }

private void initializeTextViews() {
 tv1=(TextView)findViewById(R.id.title_tv1); 
 tv1.setTypeface(FontFactory.getBFantezy(getBaseContext()));

 tv2=(TextView)findViewById(R.id.day_tv1);
 tv2.setTypeface(FontFactory.getBFantezy(getBaseContext()));

 tv3=(TextView)findViewById(R.id.day_tv3);
 tv3.setTypeface(FontFactory.getBFantezy(getBaseContext()));

     day=getIntent().getStringExtra("cheese");

if(day.equalsIgnoreCase("Day1")){
    tv1.setText("First Day");       
    tv2.setText(Html.fromHtml(getString(R.string.beginning)));  
    tv3.setText(Html.fromHtml(getString(R.string.day1))); 

    button = (Button) findViewById(R.id.city_button);        
    button.setOnClickListener(new OnClickListener() { 
  public void onClick(View arg0) { 
    // custom dialog
    final Dialog dialog = new Dialog(context,R.style.cust_dialog);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);           
    dialog.setContentView(R.layout.custom_dialog); 
    // set the custom dialog components - text, image and button
    TextView text = (TextView) dialog.findViewById(R.id.dialog_text);
    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));                
    text.setText(Html.fromHtml(getString(R.string.torusim_places_1)));

    Button dialogButton = (Button) dialog.findViewById(R.id.dialog_Button);             
    dialogButton.setTypeface(FontFactory.getBFantezy(getBaseContext()));
    dialogButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
   });
            dialog.show(); 
        }
   });
 }

 else if(day.equalsIgnoreCase("Day2")){
    tv1.setText("Second Day");
    tv2.setText(Html.fromHtml(getString(R.string.beginning)));
    tv3.setText(Html.fromHtml(getString(R.string.day2))); 

    button = (Button) findViewById(R.id.city_button);        
    button.setOnClickListener(new OnClickListener() {    
      public void onClick(View arg0) {   
        // custom dialog
    final Dialog dialog = new Dialog(context,R.style.cust_dialog);                  
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);          
     dialog.setContentView(R.layout.custom_dialog);  

    TextView text = (TextView) dialog.findViewById(R.id.dialog_text);               
    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));              
    text.setText(Html.fromHtml(getString(R.string.torusim_places_2)));

    Button dialogButton = (Button) dialog.findViewById(R.id.dialog_Button);         
     dialogButton.setTypeface(FontFactory.getBFantezy(getBaseContext()));
        // if button is clicked, close the custom dialog
       dialogButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                dialog.dismiss(); 
                 }
             });  
                dialog.show();
             }
         });
       }
 else if(day.equalsIgnoreCase("Day3")){
    tv1.setText("Third Day");
    tv2.setText(Html.fromHtml(getString(R.string.beginning)));
    tv3.setText(Html.fromHtml(getString(R.string.day3))); 

    button = (Button) findViewById(R.id.city_button);        
    button.setOnClickListener(new OnClickListener() {    
      public void onClick(View arg0) {   
    // custom dialog
    final Dialog dialog = new Dialog(context,R.style.cust_dialog);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);           
            dialog.setContentView(R.layout.custom_dialog);                  
    TextView text = (TextView) dialog.findViewById(R.id.dialog_text);               
    text.setTypeface(FontFactory.getBFantezy(getBaseContext()));              
    text.setText(Html.fromHtml(getString(R.string.torusim_places_3)));

    Button dialogButton = (Button) dialog.findViewById(R.id.dialog_Button);             
    dialogButton.setTypeface(FontFactory.getBFantezy(getBaseContext()));
        // if button is clicked, close the custom dialog
    dialogButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                dialog.dismiss(); 
            }
       });  
                dialog.show();
          }
      }); 
    }
 }
                   // this continuing repeated till day 20 // 


 public void handleClick(View v){

  Intent intent = new Intent();
  intent.setClass(this,DayGallery.class);
  intent.putExtra("dayname",day);
  startActivity(intent);

              }
        }

String.xml:

<string name="torusim_places_1">
<![CDATA[    
<b><font color=#008000>* </b>This is  <b><font color=#008080>First</b> line in  
    dialog <br/>
<b><font color=#ff00ff>* </b>This is  <b><font color=#FDD017>Second</b> line in  
    dialog <br/>         
<b><font color=#0000FF>* </b>This is  <b><font color=#808000>Third</b> line in 
    dialog <br/> 
<b><font color=#59C9FA>* </b>This is  <b><font color=#0000A0>Fourth</b> line in  
    dialog <br/>
  ]]> 
</string>

输出图片:

enter image description here

但我有20行,所以我添加了20次对话,这是多余的,它的工作正常,但我认为有比我做的更好的方法,

根据我之前提问的回答 Set custom dialog once into activity

我将答案代码应用如下:

public class MyDay extends Activity {
final Context context = this;
private Button button;
TextView tv1,tv2,tv3,tv4;
String day;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);  
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.day);  

 if (customTitleSupported) {             
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title); 
} 

    initializeTextViews();
    }

private void initializeTextViews() {
    tv1=(TextView)findViewById(R.id.title_tv1); 
    tv1.setTypeface(FontFactory.getBFantezy(getBaseContext()));

    tv2=(TextView)findViewById(R.id.day_tv1);
    tv2.setTypeface(FontFactory.getBFantezy(getBaseContext()));

    tv3=(TextView)findViewById(R.id.day_tv3);
    tv3.setTypeface(FontFactory.getDroidNaskh(getBaseContext()));

           day=getIntent().getStringExtra("cheese");

    if(day.equalsIgnoreCase("Day1")){
        tv1.setText("First Day");       
        tv2.setText(Html.fromHtml(getString(R.string.beginning)));  
        tv3.setText(Html.fromHtml(getString(R.string.day1))); 

        button = (Button) findViewById(R.id.city_button);           
        button.setOnClickListener(new OnClickListener() { 
      public void onClick(View arg0) {            
        dialogCreation(Html.fromHtml(getString(R.string.torusim_places_1)).toString());
        }
     });
   }

     else if(day.equalsIgnoreCase("Day2")){
        tv1.setText("Second Day");
        tv2.setText(Html.fromHtml(getString(R.string.beginning)));
        tv3.setText(Html.fromHtml(getString(R.string.day2))); 

        button = (Button) findViewById(R.id.city_button);        
        button.setOnClickListener(new OnClickListener() {    
    public void onClick(View arg0) {                              
        dialogCreation(Html.fromHtml(getString(R.string.torusim_places_2)).toString());
         }
      });
     }

     else if(day.equalsIgnoreCase("Day3")){
        tv1.setText("Third Day");
        tv2.setText(Html.fromHtml(getString(R.string.beginning)));
        tv3.setText(Html.fromHtml(getString(R.string.day3))); 

        button = (Button) findViewById(R.id.city_button);        
        button.setOnClickListener(new OnClickListener() {    
    public void onClick(View arg0) {                      
        dialogCreation(Html.fromHtml(getString(R.string.torusim_places_3)).toString());
        }
     });
    }
  } 
            // this continuing repeated till day 20 // 

public void handleClick(View v){
    //Create an intent to start the new activity.
    Intent intent = new Intent();
    intent.setClass(this,DayGallery.class);
    intent.putExtra("dayname",day);
    startActivity(intent); 
            }

 public void dialogCreation(String arg0) {
       // custom dialog
  final Dialog dialog = new Dialog(context,R.style.cust_dialog);
  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);           
  dialog.setContentView(R.layout.custom_dialog); 
   // set the custom dialog components - text, image and button
  TextView text = (TextView) dialog.findViewById(R.id.dialog_text);
  text.setTypeface(FontFactory.getBFantezy(getBaseContext()));                
  text.setText(arg0);

  Button dialogButton = (Button) dialog.findViewById(R.id.dialog_Button);             
  dialogButton.setTypeface(FontFactory.getBFantezy(getBaseContext()));
  dialogButton.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
        dialog.dismiss();
       }
  });
        dialog.show();
     }
   }

但我有一个问题,答案代码是无知字体颜色标记与相同( string.xml

因此所有单词都采用了一种在R.layout.custom_dialog中设置的颜色。

String.xml:

<string name="torusim_places_1">
<![CDATA[    
<b><font color=#008000>* </b>This is  <b><font color=#008080>First</b> line in  
    dialog <br/>
<b><font color=#ff00ff>* </b>This is  <b><font color=#FDD017>Second</b> line in  
    dialog <br/>         
<b><font color=#0000FF>* </b>This is  <b><font color=#808000>Third</b> line in 
    dialog <br/> 
<b><font color=#59C9FA>* </b>This is  <b><font color=#0000A0>Fourth</b> line in  
    dialog <br/>
  ]]> 
</string>

输出图片:

enter image description here

任何帮助将不胜感激,谢谢

1 个答案:

答案 0 :(得分:0)

我试过这种方式:它给了我(三星Galaxy Note N7000)橙色*和绿色的“第一”字

 <string name="torusim_places_1">
     <![CDATA[<b><font color="#FF8000"> * </font></b>This is  <b><font color="#008080">First</font></b>line in  
 dialog<br />]]>
    </string>

String的Instand将dialogCreate的参数传递给int:

  public void dialogCreation(int arg0) {
       // custom dialog
  final Dialog dialog = new Dialog(context,R.style.cust_dialog);
  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);           
  dialog.setContentView(R.layout.custom_dialog); 
   // set the custom dialog components - text, image and button
  TextView text = (TextView) dialog.findViewById(R.id.dialog_text);
  text.setTypeface(FontFactory.getBFantezy(getBaseContext()));                
  text.setText(Html.fromHtml(getStrint(arg0));

  Button dialogButton = (Button) dialog.findViewById(R.id.dialog_Button);             
  dialogButton.setTypeface(FontFactory.getBFantezy(getBaseContext()));
  dialogButton.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
        dialog.dismiss();
       }
  });
        dialog.show();
     }

并将其称为dialogCreation(R.string.torusim_places_1);