0

アプリ用に独自のギャラリーを開発しています (ギャラリー ウィジェットは廃止されたため...)

これに使用したすべてのサードパーティ ライブラリは次のとおりです。

私が直面している問題は、画面の向きが変更されたときに 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