ImageViewTouch不在DialogFragment上显示图像

时间:2014-02-19 11:03:26

标签: java android android-layout imageview android-dialogfragment

我发现了ImageViewTouch,因为我想在我的应用上创建缩放图像预览,虽然我需要在我的一个DialogFragment上显示该图像。但是它在普通的FragmentActivity上运行得很好,这是MainActivity但不在我的DialogImage中,我不知道为什么。

我使用gradle导入了库,到目前为止这是我的代码:

MainActivity

import it.sephiroth.android.library.imagezoom.ImageViewTouch;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;

    public class MainActivity extends FragmentActivity {

        ImageViewTouch mImage;

        @Override
        protected void onCreate( Bundle savedInstanceState ) {
            super.onCreate( savedInstanceState );
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView( R.layout.fragment_main );
             mImage = (ImageViewTouch) findViewById( R.id.image );

            ImageDownloader2 imgDownload = new ImageDownloader2();
            imgDownload.download("MY_URL", mImage);

            Button click = (Button)findViewById(R.id.button);
            click.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {
                    showPromoImage();
                }
            });
        }

        private void showPromoImage(){
            DialogImage promo_details = new DialogImage();
            promo_details.show(getFragmentManager(), "promo_details");
        }
    }

DialogImage

import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import it.sephiroth.android.library.imagezoom.ImageViewTouch;

/**
 * Created by Bahay on 2/19/14.
 */
public class DialogImage extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.dialog_image, container);
        getDialog().setTitle("Test");
        getDialog().setCanceledOnTouchOutside(true);

        ImageViewTouch promo = (ImageViewTouch) view.findViewById(R.id.image);
        ImageDownloader2 imgDownload = new ImageDownloader2();
        imgDownload.download("MY_URL", promo);

        return view;

    }
}

fragment_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <it.sephiroth.android.library.imagezoom.ImageViewTouch
        android:id="@+id/image"
        android:layout_width="158dp"
        android:layout_height="322dp"
        android:scaleType="fitCenter" />

    <LinearLayout
        android:layout_weight="0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dp"
        android:gravity="center"
        android:weightSum="2" >

        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="20dp"
            android:layout_height="wrap_content"
            android:text="Load Image" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="20dp"
            android:layout_height="wrap_content"
            android:text="Change Display" />
    </LinearLayout>

</LinearLayout>

dialog_image.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <it.sephiroth.android.library.imagezoom.ImageViewTouch
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter" />


</LinearLayout>

ImageDownloader2只是一个从URL下载图像然后将其转换为位图的库。我刚刚对此进行了一些自定义以使用ImageViewTouch。

至于ImageViewTouch,你可以在这里看到它: https://github.com/sephiroth74/ImageViewZoom

对于ImageDownloader2类,您可以在此处看到它: http://theandroidcoder.com/utilities/android-image-download-and-caching/ 我刚用ImageViewTouch替换了ImageView下载方法。

更新:

尝试使用普通的老式对话框,其中我使用Activity和Intent,其中我将DialogImage主题为android:theme="@android:style/Theme.DeviceDefault.Dialog"。输出与未加载图像的位置相同。

希望有人可以提供帮助。谢谢!

0 个答案:

没有答案