Добавление дочерних представлений в FrameLayout программно, затем изменение их позиций - PullRequest
8 голосов
/ 18 июля 2011

Я занимаюсь приложением дополненной реальности, и мне нужно показать некоторые объекты на экране камеры.Я создаю FrameLayout, к которому я добавляю свой вид с камеры, а затем я добавляю свои объекты AR (сейчас я пытаюсь с TextView).В коде ниже TextView, который я добавляю в FrameLayout, не отображается ...

Кто-нибудь может помочь?И как только я показываю fs, как я могу программно изменить его положение?

ОБНОВЛЕНИЕ

Я попытался использовать ImageView вместо TextView, и это работает... Почему!?

public class ARActivity extends Activity{

    private CBCameraView cv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            cv = new CBCameraView(this);

            FrameLayout rl = new FrameLayout(this);

            rl.addView(cv, GlobalVars.screenWidth, GlobalVars.screenHeight); 

            setContentView(rl);

            // this works...
            /*ImageView fs = new ImageView(this);
            fs.setImageResource(R.drawable.icon);
            rl.addView(fs);*/

            TextView fs = new TextView(this);
            fs.setText("Bar seco");
            fs.setTextColor(android.R.color.white);
            fs.setTextSize(1,14);
            fs.setLayoutParams(new ViewGroup.LayoutParams(
                    LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            rl.addView(fs);

    }    
}

1 Ответ

1 голос
/ 27 августа 2017

Возможно, проблема в том, как вы устанавливаете цвет текста. setTextColor () принимает аргумент значения цвета, а не идентификатор ресурса. Вам следует позвонить

fs.setTextColor(ContextCompat.getColor(context, android.R.color.white));

Если вы хотите программно изменить позицию подпредставления, вы можете настроить поля с помощью параметров макета или использовать методы setX / setY. Взгляните сюда Как я могу динамически установить положение просмотра в Android?

...