DesignSupportLibraryのSnackBarを使っていて、表示するテキストカラーを設定したい場面に遭遇しました。
で、以下のようにしました。もっといい方法がアレばぜひ教えていただきたいです。
サンプルとしてボタンをタップすると色が変わったSnackBarが出てくるだけのMainActivityを用意しました。
以下コードです。
ChangeSnackBarTextColorSample
public class MainActivity extends AppCompatActivity {
@Bind(R.id.root)
LinearLayout root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
private void showSnackBar(String msg, int color) {
Snackbar snackbar = Snackbar.make(root, msg, Snackbar.LENGTH_SHORT);
TextView textView = (TextView) snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(color);
snackbar.show();
}
@OnClick(R.id.red)
public void showRedTextSnackBar() {
showSnackBar("赤です", Color.RED);
}
@OnClick(R.id.blue)
public void showBlueTextSnackBar() {
showSnackBar("青です", Color.BLUE);
}
@OnClick(R.id.white)
public void showWhiteTextSnackBar() {
showSnackBar("白です", Color.WHITE);
}
}
まとめると、SnackBarの中で使用されている、TextViewを取得してボタンタップでその色を変えてあげてるだけです。
使いドコロはわかりませんが、TextViewがそのまま取得できているので、もちろん、アニメーションさせたりもできます。
(青色も赤色も見にくかった…)
お粗末でした。