Esta pregunta se ha formulado varias veces, pero todos dan la razón de por qué ocurre esto (es decir, el cálculo ocurre antes de que se coloque el diseño). Pero necesito la solución para esto. Intenté getBottom();
, getTop();
, getLocationOnScreen(int[] location);
. Pero todo devuelve el valor Cero (0). Incluso traté de dar estos en onStart();
, para dar tiempo a que se coloque el diseño, pero no tuve suerte. Aquí está mi código:Métodos para obtener la posición de vista devuelve 0
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.textView1);
Log.d("getBottom :", Integer.toString(tv.getBottom()));
Log.d("gettop :", Integer.toString(tv.getTop()));
int[] location = new int[2];
tv.getLocationOnScreen(location);
Log.d("getlocationonscreen values :", Integer.toString(location[0])+" "+Integer.toString(location[1]));
}
@Override
protected void onStart() {
Log.d("getBottom in onStart :", Integer.toString(tv.getBottom()));
Log.d("gettop in onStart :", Integer.toString(tv.getTop()));
int[] location = new int[2];
tv.getLocationOnScreen(location);
Log.d("getlocationonscreen in onStart :", Integer.toString(location[0])+" "+Integer.toString(location[1]));
super.onStart();
}
diseño xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="156dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
Una vez más, pido perdón por repetir la pregunta. Gracias por adelantado.
Puede explicar un poco más cuál es su problema exacto. qué va mal en el código anterior –