0

我正在为我的应用程序开发自己的画廊(因为画廊小部件已被弃用......)

我用于此的所有 3rd 方库如下:

我面临的问题是当屏幕方向改变时,我的 ImageView 不会保持在屏幕中心。它只是移动到另一个位置,可能是左上角,或者其他一些位置。

这是我的屏幕截图。

方向改变前:

在此处输入图像描述

方向改变后:

在此处输入图像描述

这是我的布局 XML 的关键部分:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF000000" android:keepScreenOn="true">
  <!-- I want my title bar and control bar in front of MorizontalPager -->
  <com.github.ysamlan.horizontalpager.HorizontalPager android:id="@+id/hPager" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal">
  </com.github.ysamlan.horizontalpager.HorizontalPager>

  <LinearLayout android:id="@+id/head" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/head_bar" android:gravity="center_vertical" android:layout_alignParentTop="true">
    <Button android:id="@+id/btnBack" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12sp" android:background="@drawable/btn_back" android:textColor="#FFFFFFFF" />
    <TextView android:id="@+id/txtFolder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:text="@string/app_name" android:gravity="center_vertical|center_horizontal" android:layout_weight="1" android:textColor="#FFFFFFFF" />
    <Button android:id="@+id/btnMenu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_menu" />
  </LinearLayout>
  ...some more...
</RelativeLayout>

我的部分活动:

private HorizontalPager hPager=null;
hPager=(HorizontalPager)findViewById(R.id.hPager);

...some code...

private void loadPhotos()
{
  for(int i=0; i<Constants.PHOTO_LIST.size(); i++)
  {
    ImageView img=new ImageView(this);
    LayoutParams lp=new LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER);
    lp.setMargins(0, 0, 0, 0);
    img.setLayoutParams(lp);
    img.setPadding(0, 0, 0, 0);
    img.setMaxWidth(Constants.SCREEN_WIDTH);
    img.setMaxHeight(Constants.SCREEN_HEIGHT);
//      img.setScaleType(ScaleType.FIT_CENTER);
    img.setAdjustViewBounds(false);
    img.setClickable(true);
    img.setFocusable(true);
    img.setFocusableInTouchMode(true);
    img.setOnClickListener(new OnClickListener()
    {
      public void onClick(View v)
      {
        isControlShow=!isControlShow;
        if(isControlShow)
        {
          head.setVisibility(View.VISIBLE);
          foot.setVisibility(View.VISIBLE);
        }
        else
        {
          head.setVisibility(View.GONE);
          foot.setVisibility(View.GONE);
        }
      }
    });
    img.setOnTouchListener(new MultiPointTouchListener());
    hPager.addView(img);
    Log.i(Constants.TAG, "Preparing photo: "+i);
    imageLoaderSet(Constants.PHOTO_LIST.get(i).getFileId(), img);
  }
  hPager.setOnScreenSwitchListener(onScreenSwitchListener);
  hPager.setCurrentScreen(currentIndex, true);
}

@Override
public void onConfigurationChanged(Configuration newConfig)
{
  super.onConfigurationChanged(newConfig);
  return;
}

@Override
protected void onResume()
{
  super.onResume();
  Log.i(Constants.TAG, "on PhotoShow resume...");
  loadPhotos();
}

直到现在,我仍然不知道是什么导致了这个问题,希望有人能给我一些提示。

4

0 回答 0