android - 如何在点击时以编程方式使 ImageView 全屏显示?

标签 android android-layout

这是我正在尝试做的。我有 4 张图片,它们在一个 LinearLayout 中,而 LinearLayoutRelativeLayout 的子项。我已经成功实现了 onClickListener。也许我的问题有点不同,但一切都是相关的。

我不知道如何将图像扩展到全屏,因为图像在一个 LinearLayout 中,它在那个 RelativeLayout 中,也许当我显示时一切都会清楚你们这些 xml 代码。

我想让 ImageView 在点击时全屏显示,并且在我点击后退按钮时能够返回。为此,我可能需要使用 onBackPressed

图像在底部。

这是xml代码:

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

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

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/url"
        android:fillViewport="true"
        android:orientation="vertical"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        android:scrollbars="none" >

        <RelativeLayout                   
            android:id="@+id/relativeLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <!-- Thumbnail Image -->

            <com.dusandimitrijevic.modification.TouchImageView
                android:id="@+id/thumbnail"
                android:layout_width="140dp"
                android:layout_height="220dp"
                android:layout_alignParentLeft="true"
                android:layout_marginRight="8dp"
                android:src="@drawable/ic_horor_filmovi_ikonica" />

            <!-- Naslov Filma -->
            <TextView
                android:id="@+id/naslov"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:textColor="#7F0000"
                android:textSize="@dimen/title_movie"
                android:layout_toRightOf="@id/thumbnail"
                android:layout_toEndOf="@+id/thumbnail" >

            </TextView>
            <!-- Godina izdanja Filma -->
            <TextView
                android:id="@+id/releaseYear"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/naslov"
                android:layout_alignStart="@+id/naslov"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_below="@+id/naslov"
                android:layout_marginTop="3dp"
                android:textColor="@color/dark_red" />

            <ImageView
                android:id="@+id/rating_star"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/thumbnail"
                android:layout_marginBottom="42dp"
                android:layout_toRightOf="@+id/thumbnail"
                android:layout_toEndOf="@+id/thumbnail"
                android:src="@drawable/ic_actions_rating_icon" />

            <Button
                android:id="@+id/url_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/thumbnail"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"
                android:layout_toRightOf="@+id/thumbnail"
                android:layout_toEndOf="@+id/thumbnail"
                style="@style/UrlDugme" />

            <TextView
                android:id="@+id/rating"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/rating_star"
                android:layout_alignTop="@+id/rating_star"
                android:layout_toRightOf="@+id/rating_star"
                android:layout_toEndOf="@+id/rating_star"
                android:gravity="center"
                android:textColor="@color/dark_red"
                android:textSize="@dimen/rating" />

            <!-- Opis Filma -->
            <RelativeLayout
                android:id="@+id/relativeLayout1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/thumbnail"
                android:layout_marginTop="14dp"
                android:background="@drawable/layout_round_rect_shape" >

                <TextView
                    android:id="@+id/description"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="18dp"
                    android:layout_marginTop="16dp"
                    android:scrollbars="vertical"
                    android:textColor="@color/dark_red"
                    android:textSize="18sp" />
            </RelativeLayout>
            <!-- Opis Filma Zavrsetak -->


            <!-- Glumci -->
            <RelativeLayout
                android:id="@+id/relativeLayout2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/relativeLayout1"
                android:layout_marginTop="12dp"
                android:background="@drawable/layout_round_rect_shape"
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/linearLayoutActors"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" >

                    <com.android.volley.toolbox.NetworkImageView
                        android:id="@+id/Image1"
                        android:layout_width="40dp"
                        android:layout_height="140dp"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="16dp"
                        android:layout_weight="1"
                        android:scaleType="fitCenter"
                        android:src="@drawable/ic_horor_filmovi_ikonica" />

                    <com.android.volley.toolbox.NetworkImageView
                        android:id="@+id/Image2"
                        android:layout_width="40dp"
                        android:layout_height="140dp"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="16dp"
                        android:layout_weight="1"
                        android:scaleType="fitCenter"
                        android:src="@drawable/ic_horor_filmovi_ikonica" />

                    <com.android.volley.toolbox.NetworkImageView
                        android:id="@+id/Image3"
                        android:layout_width="40dp"
                        android:layout_height="140dp"
                        android:layout_gravity="center_horizontal"
                        android:layout_marginTop="16dp"
                        android:layout_weight="1"
                        android:scaleType="fitCenter"
                        android:src="@drawable/ic_horor_filmovi_ikonica" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/linearLayoutTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/linearLayoutActors"
                    android:orientation="horizontal" >

                    <TextView
                        android:id="@+id/ime1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="Ime"
                        android:textColor="#7F0000"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/ime2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="Ime"
                        android:textColor="#7F0000"
                        android:textSize="16sp" />

                    <TextView
                        android:id="@+id/ime3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:gravity="center"
                        android:text="Ime"
                        android:textColor="#7F0000"
                        android:textSize="16sp" />
                </LinearLayout>
            </RelativeLayout>
            <!-- Glumci -->

                    <!-- IMAGES I WANT TO MAKE FULLSCREEN ON CLICK -->
                    <LinearLayout
                        android:layout_marginTop="12dp"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:background="@drawable/layout_round_rect_shape"
                        android:id="@+id/linearLayoutImages"
                        android:layout_below="@+id/relativeLayout2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" >

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image1"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                            </com.dusandimitrijevic.modification.TouchImageView>    

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image2"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                            </com.dusandimitrijevic.modification.TouchImageView>

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image3"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                           </com.dusandimitrijevic.modification.TouchImageView>     

                            <com.dusandimitrijevic.modification.TouchImageView
                                android:id="@+id/image4"
                                android:adjustViewBounds="true"
                                android:layout_weight="1"
                                android:layout_width="115dp"
                                android:layout_height="150dp"
                                android:src="@drawable/ic_horor_filmovi_ikonica" >
                            </com.dusandimitrijevic.modification.TouchImageView>                                                    

                    </LinearLayout>
                    <!-- IMAGES I WANT TO MAKE FULLSCREEN ON CLICK -->

        </RelativeLayout>

    </ScrollView>       

</RelativeLayout>

这里是 onClickListener:

image1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 115, getResources().getDisplayMetrics());
            int px1 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 150, getResources().getDisplayMetrics());
            LinearLayout.LayoutParams p = new LinearLayout.
                    LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            p.weight = 1;
            if(isImageFitToScreen) {
                image1.setMinimumWidth(px);
                image1.setMinimumHeight(px1);
                image1.setAdjustViewBounds(true);
                isImageFitToScreen=false;
            }else{
                image1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                image1.setScaleType(ImageView.ScaleType.FIT_XY);
                isImageFitToScreen=true;
            }
        }
    });

最佳答案

为了提供 Ben 的答案的替代方案并充实我之前的评论,一种可能是在 xml 中创建一个占据整个屏幕的 ImageView,它的可见性设置为 gone。按下按钮时,将图像加载到此 ImageView 中,然后再次按下按钮时将可见性设置为 gone

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

    <ScrollView>
        <!-- Everything else! -->
    </ScrollView>       

    <ImageView
        android:id="@+id/full_screen_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />

</RelativeLayout>

在您的 ActivityonCreate() 方法中:

@Override
public void onCreate(Bundle mySavedInstances) {
  ImageView fullScreenContainer = (ImageView) findViewById(R.id.full_screen_container);

  image1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //However it is you load your images
            fullScreenContainer.setImageDrawawble(R.drawable.example);
            fullScreenContainer.setVisibility(View.VISIBLE);
        }
  });
}

@Override
public void onBackPressed() {
    if (fullScreenContainer.getVisibility() == View.VISIBLE) {
        fullScreenContainer.setImageDrawable(null);
        fullScreenContainer.setVisibility(View.GONE);
    } else {
        super.onBackPressed();
    }
}

关于android - 如何在点击时以编程方式使 ImageView 全屏显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054340/

相关文章:

android - 在android上使用全局异常处理

android - 从 onBindViewHolder android 访问 Google map

java - 将主人的地理位置分享给奴隶的最佳方式是什么?

android - 使用一张图像表示不同的按钮状态

android - 可检查 View 中的 setChecked() 方法每次扰乱布局时都会触发两次

android - Jenkins Android 构建失败 - 无法构建 libwebviewchromium.so

Android工作室AVD错误

android - 为什么 ConstraintLayout 1.1.0 layout_constraintWidth_percent 和 layout_constraintDimensionRatio 不能一起工作?

android - 在两个不同的布局之上重叠 circleView

android - 如何使应用程序中的字体大小不受更改设置字体大小的影响