I'm having a very weird problem with a layout. It looks as designed in eclipse XML editor and in my Samsung galaxy but it's messed up in my old phone xperia x10 mini. I can only assume that this would occur in other devices too.
If someone could help fix this I would be grateful.
Here are the two screenshots and the XML code.
how it looks in eclipse layout editor and in my Samsung galaxy S4 mini
how it looks in Sony xperia x10 mini
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_height="wrap_content" >
<FrameLayout
android:layout_marginTop="7dp"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<View android:layout_marginTop="19dp" android:layout_marginLeft="19dp" android:layout_height="249dp" android:layout_width="2dp" android:background="#B2CFEF"/>
<View android:layout_marginTop="19dp" android:layout_marginLeft="189dp" android:layout_height="249dp" android:layout_width="2dp" android:background="#B2CFEF"/>
<View android:layout_marginTop="18dp" android:layout_marginLeft="20dp" android:layout_height="2dp" android:layout_width="170dp" android:background="#B2CFEF"/>
<View android:layout_marginTop="267dp" android:layout_marginLeft="19dp" android:layout_height="2dp" android:layout_width="171dp" android:background="#B2CFEF"/>
<ImageView style="@style/ta_img" android:id="@+id/ta_lu" android:layout_marginTop="52dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_lc" android:layout_marginTop="124dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_ld" android:layout_marginTop="197dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_ru" android:layout_marginLeft="170dp" android:layout_marginTop="52dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_rc" android:layout_marginLeft="170dp" android:layout_marginTop="124dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_rd" android:layout_marginLeft="170dp" android:layout_marginTop="197dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_tl" android:layout_marginLeft="37dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_tc" android:layout_marginLeft="84dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_tr" android:layout_marginLeft="132dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_bl" android:layout_marginLeft="37dp" android:layout_marginTop="249dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_bc" android:layout_marginLeft="84dp" android:layout_marginTop="249dp" />
<ImageView style="@style/ta_img" android:id="@+id/ta_br" android:layout_marginLeft="132dp" android:layout_marginTop="249dp" />
</FrameLayout>
</LinearLayout>
and this is the style of the ImageViews
<style name="ta_img" >
<item name="android:layout_width">40dp</item>
<item name="android:layout_height">40dp</item>
<item name="android:clickable">true</item>
<item name="android:src">@drawable/ta</item>
</style>
Any ideas???
A constraint layout can easily adjust to fit any screen, without any complex hierarchies, like this:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<View
android:id="@+id/left_border"
android:layout_width="2dp"
android:layout_height="0dp"
android:layout_margin="@dimen/border_margin"
android:background="#B2CFEF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ta_lu"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="@id/left_border"
app:layout_constraintRight_toRightOf="@id/left_border"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/ta_lc" />
<ImageView
android:id="@+id/ta_lc"
app:layout_constraintLeft_toLeftOf="@id/left_border"
app:layout_constraintRight_toRightOf="@id/left_border"
app:layout_constraintTop_toBottomOf="@id/ta_lu"
app:layout_constraintBottom_toTopOf="@id/ta_ld"
style="@style/ta_img" />
<ImageView
android:id="@+id/ta_ld"
app:layout_constraintLeft_toLeftOf="@id/left_border"
app:layout_constraintRight_toRightOf="@id/left_border"
app:layout_constraintTop_toBottomOf="@id/ta_lc"
app:layout_constraintBottom_toBottomOf="parent"
style="@style/ta_img" />
<View
android:id="@+id/right_border"
android:layout_width="2dp"
android:layout_height="0dp"
android:layout_margin="@dimen/border_margin"
android:background="#B2CFEF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ta_ru"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="@id/right_border"
app:layout_constraintRight_toRightOf="@id/right_border"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/ta_rc" />
<ImageView
android:id="@+id/ta_rc"
app:layout_constraintLeft_toLeftOf="@id/right_border"
app:layout_constraintRight_toRightOf="@id/right_border"
app:layout_constraintTop_toBottomOf="@id/ta_ru"
app:layout_constraintBottom_toTopOf="@id/ta_rd"
style="@style/ta_img" />
<ImageView
android:id="@+id/ta_rd"
app:layout_constraintLeft_toLeftOf="@id/right_border"
app:layout_constraintRight_toRightOf="@id/right_border"
app:layout_constraintTop_toBottomOf="@id/ta_rc"
app:layout_constraintBottom_toBottomOf="parent"
style="@style/ta_img" />
<View
android:id="@+id/top_border"
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_margin="@dimen/border_margin"
android:background="#B2CFEF"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ta_tl"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="@id/ta_tc"
app:layout_constraintTop_toTopOf="@id/top_border"
app:layout_constraintBottom_toBottomOf="@id/top_border" />
<ImageView
android:id="@+id/ta_tc"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="@id/ta_tl"
app:layout_constraintRight_toRightOf="@id/ta_tr"
app:layout_constraintTop_toTopOf="@id/top_border"
app:layout_constraintBottom_toBottomOf="@id/top_border" />
<ImageView
android:id="@+id/ta_tr"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="@id/ta_tc"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/top_border"
app:layout_constraintBottom_toBottomOf="@id/top_border" />
<View
android:id="@+id/bottom_border"
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_margin="@dimen/border_margin"
android:background="#B2CFEF"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<ImageView
android:id="@+id/ta_bl"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="@id/ta_bc"
app:layout_constraintTop_toTopOf="@id/bottom_border"
app:layout_constraintBottom_toBottomOf="@id/bottom_border" />
<ImageView
android:id="@+id/ta_bc"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="@id/ta_bl"
app:layout_constraintRight_toRightOf="@id/ta_br"
app:layout_constraintTop_toTopOf="@id/bottom_border"
app:layout_constraintBottom_toBottomOf="@id/bottom_border" />
<ImageView
android:id="@+id/ta_br"
style="@style/ta_img"
app:layout_constraintLeft_toLeftOf="@id/ta_bc"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/bottom_border"
app:layout_constraintBottom_toBottomOf="@id/bottom_border" />
To adjust the margins, just change border_margin
in dimens.xml
. I used the following value in the screenshot below, which you can adjust at will:
<dimen name="border_margin">40dp</dimen>
Here's a screenshot: