Relative Layout Not getting below as defined
Now here is my XML code for layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:id="@+id/RelativeLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/default1"
android:id="@+id/default1"
android:layout_gravity="center"
android:scaleType="fitXY">
</ImageView>
<ImageView
android:layout_marginTop="19dp"
android:layout_width="180dp"
android:layout_height="45dp"
android:src="@drawable/fc_postyour_best_score_bg"
android:id="@+id/postscore"
android:layout_alignParentRight="true"
android:scaleType="fitXY">
</ImageView>
<ImageButton
android:layout_marginTop="22dp"
android:layout_width="35dp"
android:layout_height="35dp"
android:background="@drawable/fctwitterup"
android:layout_marginLeft="7dp"
android:id="@+id/twitter"
android:layout_alignRight="@id/postscore"
android:scaleType="fitXY">
</ImageButton>
<ImageButton
android:layout_marginTop="22dp"
android:layout_width="35dp"
android:layout_height="35dp"
android:background="@drawable/fcfacebookdown"
android:id="@+id/fb"
android:layout_toLeftOf="@id/twitter">
</ImageButton>
<ImageButton
android:layout_width="160dp"
android:layout_height="40dp"
android:background="@drawable/fsremove_ads_down"
android:id="@+id/fsremove_ads_down"
android:layout_below="@id/postscore"
android:layout_alignParentRight="true"
android:layout_marginBottom="3dp">
</ImageButton>
<ToggleButton
android:id="@+id/fsvibrate_on"
android:layout_width="135dip"
android:layout_height="35dip"
android:textOff=""
android:textOn=""
android:layout_below="@+id/fsremove_ads_down"
android:layout_alignParentRight="true"
android:background="@drawable/fsvibrate_on">
</ToggleButton>
<ImageButton
android:layout_width="210dp"
android:layout_height="60dp"
android:background="@drawable/fcpl开发者_StackOverflowaydown"
android:id="@+id/fcplaydown"
android:layout_centerInParent="true">
</ImageButton>
<ToggleButton
android:id="@+id/fcsoundondown"
android:layout_width="35dp"
android:layout_height="35dp"
android:textOff=""
android:textOn=""
android:layout_below="@+id/fcplaydown"
android:background="@drawable/fcsoundondown">
</ToggleButton>
</RelativeLayout>
</LinearLayout>
So My Problem is @+id/fcsoundondown
Toggle button I have set to below of @+id/fcplaydown
but it is not coming below to the specified button but comes after "@+id/postscore"
I don't know to explain very well why this happens, but it's related to your setting the @+id/fcplaydown ImageButton
to center in parent, and his parent being a RelativeLayout with wrap_content width and height, the layout just gets confused.
So, change the RelativeLayout
settings to match_parent
, and it will work.
<RelativeLayout
android:id="@+id/RelativeLayout01"
android:layout_height="match_parent"
android:layout_width="match_parent">
Layout view id's are used to relate locations and sizes. Now, when a id gets defined, it gets stored in R.java. We all know that. Well, what we dont know is, that views within a RelativeLayout are built out of more than one parse of the layout file. Considering that compilation is a expensive process, and there is a need to optimize on this process, Android needs id to be reset using a + sign when u want to use it, not only when u declare it. Even though its kinda confusing, this is how it is to be used.
@+id should be used only when you are assigning a new ID to the element. While when you are referring an element use @id.
The at-symbol (@) at the beginning of the string indicates that the XML parser should parse and expand the rest of the ID string and identify it as an ID resource. The plus-symbol (+) means that this is a new resource name that must be created and added to our resources (in the R.java file).
Reference: http://developer.android.com/guide/topics/ui/declaring-layout.html#id
精彩评论