Android编程中风

时间:2012-05-30 22:00:22

标签: android android-canvas textview

我想在Android中的文字上画一个黑色笔画。

我见过这个例子: How do you draw text with a border on a MapView in 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,我根据用户在TextEntry中编写他/她想要的文本并随后点击一个按钮来更改TextView的文本内容。

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对象?

1 个答案:

答案 0 :(得分:1)

为TextView中呈现的文本获取阴影的最简单方法是设置this answer中所述的样式。这需要很少的工作,听起来它会在你的情况下正常工作。

使用您链接的技术涉及扩展现有的View类,重写onDraw(),并在传递给onDraw()的画布上使用Canvas.drawText()来自己呈现文本。这可能正是您在某些情况下所需要的,但听起来像是对您目前的情况有些过分。如果你想进一步研究,the Android dev guide on the subject是一个很好的阅读。