почему себе показывает в TextView, “вышедший” стоимость 0 вместо ширины изображения?

Я делаю простую программу, в которой оно является изображением, загрузив приложение, и нуждаюсь в том, чтобы узнать точные координаты, высоту и ширину во время выполнения. Вопрос состоит в том, что в методе OnCreate я не добиваюсь того, чтобы он показал мне на экране вышеупомянутую стоимость. Мне показывает стоимость ноль.

Мой код - следующий:

public class MainActivity extends AppCompatActivity implements View.OnTouchListener{
    TextView x;
    TextView salida;
    ImageView barra;
    ImageView linea;

    int y, h_barra, y_barra, alto;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        x = (TextView) findViewById(R.id.x);
        salida = (TextView) findViewById(R.id.salida);

        barra = (ImageView) findViewById(R.id.barra);
        linea = (ImageView) findViewById(R.id.linea);

        salida.setText(Integer.toString(barra.getWidth()));

        barra.setOnTouchListener(this);

        }
    }
1
задан 17.01.2017, 21:41
0 ответов

Когда его называются метод onCreate() еще создана UI, в этом моменте ты не можешь получать средства, если ты стараешься реализовывать это, в этой точке ты получишь стоимость 0, ты должен получать их после того, как я осуществляюсь строительство.

Посредством класса ViewTreeObserver ты можешь создавать listener, чтобы обнаруживать момент, в котором заканчивают рисовать UI и в этом моменте иметь правильные свойства, в этом случае средство.

final TextView textview = (TextView)findViewById(R.id.my_textview);

ViewTreeObserver vto = textview.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    public boolean onPreDraw() {        
        textview.getViewTreeObserver().removeOnPreDrawListener(this);
        int alturaVista = textview.getMeasuredHeight();
        int anchoVista = textview.getMeasuredWidth();
        Log.i("Medidas", "El TextView tiene una altura: " + alturaVista + " y un ancho: " + anchoVista );
        return true;
    }
});
0
ответ дан 03.12.2019, 17:38

Теги

Похожие вопросы