【问题标题】:How to set TouchImageView width as half of Device`s width and height as Device`s width?如何将 TouchImageView 宽度设置为设备宽度的一半,将高度设置为设备宽度?
【发布时间】:2015-07-16 12:10:20
【问题描述】:

我想在我的main activity 上显示两个TouchImageViews。我想将每个 TouchImageView 的宽度设置为 devices screen size. As well as I want to set height of eachTouchImageView` 的一半宽度为设备宽度的宽度。我已经尝试过,但没有得到我想要的结果。我想要下图的结果。

我试过下面的代码...

MainActivity.Java:

Display DeviceDisplay = getWindowManager().getDefaultDisplay();

Point size = new Point();
DeviceDisplay.getSize(size);

int DeviceDisplayWidth = size.x;
int DeviceDisplayHeight = size.y;

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(DeviceDisplayWidth / 2, DeviceDisplayHeight);

img_to_be_zoomed.setLayoutParams(params);
img_to_be_zoomed_mirror.setLayoutParams(params);

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="4"
    tools:context="com.PinchZoom.pinchzoomexampletwo.MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="3dp"
        android:layout_weight="0.5"
        android:gravity="center_vertical"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/img_back"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:contentDescription="@string/img_back_description"
            android:src="@drawable/back_icon"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/txt_app_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="@string/txt_app_name"
            android:textSize="35px"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/img_menu"
            android:layout_width="35dp"
            android:layout_height="35dp"
            android:contentDescription="@string/img_menu_description"
            android:src="@drawable/menu_icon" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:background="@drawable/linear_layout_square"
        android:gravity="center" >

        <com.PinchZoom.pinchzoomexampletwo.TouchImageView
            android:id="@+id/img_to_be_zoomed"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/img" >
        </com.PinchZoom.pinchzoomexampletwo.TouchImageView>

        <com.PinchZoom.pinchzoomexampletwo.TouchImageView
            android:id="@+id/img_to_be_zoomed_mirror"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/img" >
        </com.PinchZoom.pinchzoomexampletwo.TouchImageView>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="1dp"
        android:layout_weight="0.5"
        android:gravity="bottom"
        android:orientation="horizontal" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_first"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="bottom"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_first"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_second"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="bottom"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_second"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_third"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="bottom"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_third"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout_bottom_hscrolling_fourth"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:gravity="bottom"
        android:orientation="horizontal"
        android:visibility="gone" >

        <com.devsmart.android.ui.HorizontalListView
            android:id="@+id/horizontal_list_view_fourth"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:background="#ddd" >
        </com.devsmart.android.ui.HorizontalListView>
    </LinearLayout>

</LinearLayout>

【问题讨论】:

  • ImageView 中需要 scaleType 属性
  • 使用带有权重、权重总和和方向的线性布局?
  • 需要以编程方式设置设备尺寸的变化。@Skynet 我已经尝试过缩放类型以适应 XY、centerCrop 但没有得到@yshahak

标签: android android-layout android-activity


【解决方案1】:

试试这个代码.. 将您的图像视图宽度和高度设置为运行时。

 private void setImageView() {
    // adding a view tree observer on image container

YourLayout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            // remove predrawlistener
            YourLayout.getViewTreeObserver().removeOnPreDrawListener(this);
            setImageViewParams();
            return true;
        }
    });

    YourImageView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver
            .OnPreDrawListener() {
        @Override
        public boolean onPreDraw() {
            // remove predrawlistener
            YourImageView.getViewTreeObserver().removeOnPreDrawListener(this);
            setImageViewParams();
            return true;
        }
    });
}

private void setImageViewParams() {
    if (YourImageView.getHeight() == 0 || rootView.getHeight() == 0) {
        return;
    }
    LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) rootView.getLayoutParams();
    int imageViewPostion = (rootView.getWidth()/2);

    LinearLayout.LayoutParams imageViewLayoutParams = (Linear.LayoutParams) yourImageview.getLayoutParams();
    imageViewLayoutParams.setWidth = positonAfterImageContainer;
    iamgeViewLayoutParams.setHeight = positonAfterImageContainer;
    imageViewID.setLayoutParams(imageViewLayoutParams);
}

【讨论】:

    猜你喜欢
    • 2013-07-14
    • 2017-02-08
    • 2019-07-05
    • 1970-01-01
    • 2023-04-09
    • 2011-08-06
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多