6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SnackBarの文字色を自由に設定する方法

Last updated at Posted at 2016-01-11

DesignSupportLibraryのSnackBarを使っていて、表示するテキストカラーを設定したい場面に遭遇しました。
で、以下のようにしました。もっといい方法がアレばぜひ教えていただきたいです。
サンプルとしてボタンをタップすると色が変わったSnackBarが出てくるだけのMainActivityを用意しました。

ezgif.com-video-to-gif.gif

以下コードです。

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がそのまま取得できているので、もちろん、アニメーションさせたりもできます。
(青色も赤色も見にくかった…)

お粗末でした。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?