Я хочу нарисовать черный штрих на моем тексте в Android.
Я видел этот пример: как вы рисуете текст с рамкой на MapView в Android?
Где решение переопределяет onDraw() для создания штриха.
Проблема в том, что я по-прежнему относительно устарел на Android, и я понятия не имею, как перейти к использованию этого решения.
В моем onCreate я устанавливаю текстовый шрифт (он настраивается):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeatures();
// Set content view and component listeners
setContentView(R.layout.meme_maker);
setListeners();
context = this;
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Impact.ttf");
TextView mmt = (TextView) findViewById(R.id.meme_maker_title);
TextView ttc = (TextView) findViewById(R.id.top_text_canvas);
TextView tbc = (TextView) findViewById(R.id.bottom_text_canvas);
ttc.setTypeface(tf);
tbc.setTypeface(tf);
mmt.setTypeface(tf);
}
И у меня есть onClickListener, где я меняю текстовое содержимое TextView на основе пользователя, который пишет текст, который он хочет в TextEntry, и затем нажимает кнопку.
ImageView ii = (ImageView) findViewById(R.id.insert_image);
ii.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText tt = (EditText) findViewById(R.id.top_text_text);
EditText bt = (EditText) findViewById(R.id.bottom_text_text);
TextView ttc = (TextView) findViewById(R.id.top_text_canvas);
TextView btc = (TextView) findViewById(R.id.bottom_text_canvas);
ttc.setText(tt.getText().toString().toUpperCase());
btc.setText(bt.getText().toString().toUpperCase());
}
});
До сих пор это довольно просто. Мой вопрос: как вставить штрих текста? Где? Нужно ли создавать объекты Canvas и Paint?
спасибо
Самый простой способ получить тень для текста, отображаемого в TextView, - это создать стиль, описанный в этом ответе. Это требует очень небольшой работы и звучит так, как будто это будет хорошо работать в вашей ситуации.
Используя метод, к которому вы ссылаетесь, включает расширение существующего класса View, переопределение onDraw() и использование Canvas.drawText() на холсте, переданном onDraw(), для визуализации текста самостоятельно. Это может быть именно то, что вам нужно в некоторых ситуациях, но звучит как излишний для вашей текущей ситуации. Если вы хотите заглянуть в нее дальше, руководство Android dev по этому вопросу хорошо читается.