2016-07-06 4 views
1

ユーザーが太字のチェックボックスをオンにしたときにテキストスタイルを太字に変更したいが、それを行うことができない。チェックボックスをオンにしてもテキストは正常に表示されます。アンドロイドでプログラムによるテキストスタイルの変更

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentTop="true" 
    android:gravity="top" 
    /> 

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="bold" 
    android:id="@+id/bold" 
    android:layout_alignBottom="@+id/editText" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginBottom="57dp" 
    android:checked="false" /> 

</RelativeLayout> 

MainActivity

public class MainActivity extends AppCompatActivity { 
    CheckBox checkBox; 
    EditText editText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     editText= (EditText) findViewById(R.id.editText); 
     checkBox=(CheckBox)findViewById(R.id.bold); 
     if(checkBox.isChecked()) 
      editText.setTypeface(editText.getTypeface(), Typeface.BOLD); 

    } 
    ... 
} 

答えて

1

OnCheckedChangeListenerを追加し、そこに書体を変更する必要があります。太字やイタリックチェックボックスを使って、このような何か可能性があるため

CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton button, boolean checked) { 
     Typeface typeface = editText.getTypeface(); 

     switch(button.getId()) { 
      case R.id.bold: 
       if(typeface.isItalic()) { 
        editText.setTypeface(typeface, checked?Typeface.BOLD_ITALIC:Typeface.ITALIC); 
       } else { 
        editText.setTypeface(typeface, checked?Typeface.BOLD:Typeface.NORMAL); 
       } 
       break; 
      case R.id.italic: 
       if(typeface.isBold()) { 
        editText.setTypeface(typeface, checked?Typeface.BOLD_ITALIC:Typeface.BOLD); 
       } else { 
        editText.setTypeface(typeface, checked?Typeface.ITALIC:Typeface.NORMAL); 
       } 
       break; 
     } 
    } 
}; 

bold.setOnCheckedChangeListener(listener); 
italic.setOnCheckedChangeListener(listener); 
+0

ありがとうございました。太字の場合のようなマルチチェックチェックボックスがある場合、イタリックのチェックボックスを複数選択すると、複数のリストを設定する必要がありますか? –

+0

ボタンまたはgetList()を見て、それに基づいて別のことをする1つのリスナのいずれか – tachyonflux

+0

実際に私はアンドロイドに新しいです –

0

、次の属性を使用して、任意のXMLウィジェットのテキストスタイルを変更することができます。

あなたが使用することもでき
android:textStyle="bold" 

android:textStyle="italic" 
android:textStyle="bold|italic" 

イタリック体と太字の両方の場合敬意を表してイタリック体。

ます。また、使用することができます。

editText.setTypeface(editText.getTypeface(), Typeface.BOLD); 

この次を使用してonCreateメソッドから呼び出されている必要があります

XML: 
android:onClick="makeBold" 

Activity: 
public void makeBold(View V) { 
if(checkBox.isChecked()) 
    editText.setTypeface(editText.getTypeface(), Typeface.BOLD); 
} 

希望をこのことができます!

+0

私はスタイルを変更したいですプログラムで –

+0

私の更新された答えを参照してください。 – 26hmkk

0

をあなたは、チェックボックスにリスナーを追加しましたので、その後、チェックボックスの状態が変更されたときに検出し、適切な書体を設定してください:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
       if(isChecked){ 
      editText.setTypeface(editText.getTypeface(), Typeface.BOLD); 
      } else { 
      editText.setTypeface(editText.getTypeface(), Typeface.NORMAL); 
      } 
     }); 
+0

ありがとうございました。太字のような複数のチェックボックスがある場合、斜体の場合は複数のリスナーを設定する必要がありますか? –

+0

はい、すべてのチェックボックスにリスナーを設定するだけで、リスナー内のチェックボックスの状態を確認することもできます。 –

+0

他に良い方法はありませんか? –

関連する問題