這很奇怪,但在Java代碼中設置左邊距或右邊距不適用於某些設備/平臺。Android。設置左/右邊距不起作用
這是代碼。 簡單的XML:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
>
<View
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:background="#00ff00" />
</FrameLayout>
的Java:
@Override
public void onConfigurationChanged (Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)findViewById(R.id.myView).getLayoutParams();
params.leftMargin = 50;
params.rightMargin = 50;
params.topMargin = 50;
params.bottomMargin = 50;
findViewById(R.id.myView).requestLayout();
}
}
所以我有內部的FrameLayout綠色視圖。在旋轉時,我更改視圖的邊距。 (我的活動有機器人:configChanges = 「方向|屏幕尺寸」)
這裏是結果:
三星Galaxy S 3(安卓4.1.2)(正常工作)
索尼愛立信Xperia Arc S(的Android 4.0.4)(作品怪!)
正如你所看到的代碼工作正常在Android 4.1.2。並且在Android 4.0.4上,未設置左右頁邊距,但設置了上邊距。爲什麼最高?
我已經在模擬器上測試過。所有平臺> = Android 4正常工作。 Android 2.3的利潤率根本沒有設置,甚至是最高利潤率。
有誰知道如何處理它?如何更改代碼中的保證金,以便它可以在所有平臺上使用?
感謝,但它並不重要。這不是關於DP和PX。這是關於上邊距設置(甚至由像素設置),左邊距根本沒有設置。我想知道爲什麼,並找出我可以從代碼中完成的方式。 –
爲什麼你不定義2個佈局,一個是水平的,一個是垂直的,爲什麼你要用代碼來做呢? – user1634451
因爲我不想重新創建我的佈局。 –