Я работаю над приложением для Android, в котором я вижу некоторое несоответствие между тем, что отображается на реальном устройстве, и тем, что появляется, когда я запускаю приложение на эмуляторе.
Вот соответствующийcode.
У меня есть xml-файл, который определяет фигуру - простой синий прямоугольник:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="4dp" />
<gradient
android:angle="270"
android:startColor="#449def"
android:endColor="#2f6699" />
<stroke
android:width="1dp"
android:color="#2f6699" />
</shape>
Затем у меня есть другой xml-файл "view", который использует эту форму, как показано здесь:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<View
android:background="@drawable/blue_rectangle"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
Наконец, у меня есть пользовательская ViewGroup, которая расширяет RelativeLayout.Этот пользовательский макет имеет дочерний объект вида, который я описал выше.Пользовательский макет также переопределяет метод onLayout, так что он обрабатывает сам процесс макета.Этот код находится здесь:
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4)
{
//Layout the children of this viewgroup
int childCount = this.getChildCount();
for (int i = 0; i < childCount; i++)
{
NodeView view = (NodeView) this.getChildAt(i);
view.layout(40, 40, 40, 40); //Hard code the child object position
}
}
Как вы можете видеть, я жестко кодирую дочерние представления, чтобы иметь положение (40, 40) и иметь ширину и высоту 40 dip.
К сожалению,Я получаю разные результаты.Вот как это выглядит на эмуляторе Android (часть инструментов разработки Android):
Вот как это выглядит на моем реальном устройстве Android (и это то, чтоЯ тоже хочу, чтобы это выглядело):
Что вызывает несоответствие размеров синей рамки?Есть идеи?Спасибо!