Центрировать TextView поверх ImageView программно - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть изображение и текст, который я хочу добавить в свое приложение.Мне нужно, чтобы текст был в центре изображения.Все делается программно с помощью объекта RelativeLayout.По какой-то причине мне удается центрировать TextView поверх ImageView только вертикально.

Это функция, которая создает RelativeLayout:

 private void buildPost(Context context){

    Random rnd = new Random();
    SquareImageView postBgImgIV = new SquareImageView(context);
    postBgImgIV.setBackgroundColor(Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)));
    postBgImgIV.setImageResource(R.drawable.clear);


    TextView postContentTV = new TextView(context);
    postContentTV.setText(this.postContent);
    postContentTV.setTextSize(42);
    //postContentTV.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
    postContentTV.setGravity(Gravity.CENTER);


    post = new RelativeLayout(context);
    post.addView(postBgImgIV);
    post.addView(postContentTV);
}

Я уверен, что япропустить что-то, и это не может решить с помощью нескольких строк кода.Я буду любить, чтобы получить помощь:)

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Проблема решена!На самом деле мне нужно было определить новый RelativeLayout.LayoutParams, а затем отличить textView LayoutParams как новый RelativeLayout.LayoutParams.

Код это:

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
    params.addRule(RelativeLayout.CENTER_IN_PARENT);
    postContentTV.setLayoutParams(params);
0 голосов
/ 30 сентября 2018

Вам необходимо добавить параметры макета в текстовое представление

 TextView textView = new TextView(context);

RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.CENTER_IN_PARENT);
            textView.setLayoutParams(lp);;
...