调整布局中设置的图像按钮 xml android
resizing imagebutton set in layout xml android
Android 开发的新手,在 Android Studio 中,我创建了一个布局,其中包括 2-ImageButtons 和 1-ImageView,它们都排成一排。
我已经制作了所有的 ldpi、mdpi、hdpi、xhdpi、xxhdpi 图像并将它们放在它们的文件夹中。
在 Android Studio 中看起来不错,但是在模拟器中 运行 时,图像更大,并且超出了设备屏幕,这不是我想要的比例看看。
所以我尝试通过它们的 ID 调出项目,并根据 MainActivity Java 文件中的屏幕大小手动设置它们。
这是整个布局xml,我目前有
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/mainView" tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/backgroundView"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@mipmap/yellow_background" />
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/gridLayout">
<ImageButton
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/menuBtn"
android:layout_row="0"
android:layout_column="0"
android:background="@mipmap/menu_button"
android:layout_marginTop="65dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="30dp" />
<ImageView
android:layout_width="200dp"
android:layout_height="81dp"
android:id="@+id/logo"
android:layout_row="0"
android:layout_column="1"
android:background="@mipmap/logo_image"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal" />
<ImageButton
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/settingsBtn"
android:layout_row="0"
android:layout_column="2"
android:background="@mipmap/settings_button"
android:layout_marginTop="65dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="30dp" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="345dp"
android:layout_row="1"
android:layout_column="0"
android:layout_columnSpan="3"
android:layout_margin="20dp"
android:layout_gravity="fill_horizontal|center_horizontal">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="view 1"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="view 2"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="view 3"/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rights Reserved"
android:id="@+id/textView2"
android:layout_row="2"
android:layout_column="0"
android:layout_gravity="center_horizontal"
android:layout_columnSpan="3" />
</GridLayout>
在 Java 文件中,我试图像这样手动调整大小:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
double topMenuWidth = 0.1;
ImageButton menuBtn = (ImageButton)findViewById(R.id.menuBtn);
menuBtn.setMaxWidth((int)(width * topMenuWidth));
但是,这是行不通的。我有什么想法可以像我正在尝试的那样调整 menuBtn 的大小吗?或者对于 Android 开发的每个屏幕缩放图像的更自动方式的任何其他想法?
在看了 7 天大量教程视频并用头撞墙之后,我终于找到了灵感!
我已经更改 xml 多次,所以我只 post 最新的对我有用的。但是有 2 个关键项目帮助我克服了这个问题。
- 在 XML
中添加 "scaleType="fitCenter""
- 在 Java
中使用 "settingLayoutParams"
在XML中:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/headerLayout">
<ImageButton
android:id="@+id/menuBtn"
android:contentDescription="@string/menu_button"
android:src="@mipmap/menu_button"
android:background="#00000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:scaleType="fitCenter" />
</RelativeLayout>
在Java中:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
height = metrics.heightPixels;
width = metrics.widthPixels;
double topMenuWidthScale = 0.1;
int topMenuWidth = (int)(topMenuWidthScale * width);
menuBtn = (ImageButton)findViewById(R.id.menuBtn);
menuBtn.setLayoutParams(new RelativeLayout.LayoutParams(topMenuWidth, topMenuWidth));
Android 开发的新手,在 Android Studio 中,我创建了一个布局,其中包括 2-ImageButtons 和 1-ImageView,它们都排成一排。
我已经制作了所有的 ldpi、mdpi、hdpi、xhdpi、xxhdpi 图像并将它们放在它们的文件夹中。
在 Android Studio 中看起来不错,但是在模拟器中 运行 时,图像更大,并且超出了设备屏幕,这不是我想要的比例看看。
所以我尝试通过它们的 ID 调出项目,并根据 MainActivity Java 文件中的屏幕大小手动设置它们。
这是整个布局xml,我目前有
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/mainView" tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/backgroundView"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@mipmap/yellow_background" />
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/gridLayout">
<ImageButton
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/menuBtn"
android:layout_row="0"
android:layout_column="0"
android:background="@mipmap/menu_button"
android:layout_marginTop="65dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="30dp" />
<ImageView
android:layout_width="200dp"
android:layout_height="81dp"
android:id="@+id/logo"
android:layout_row="0"
android:layout_column="1"
android:background="@mipmap/logo_image"
android:layout_marginTop="20dp"
android:layout_gravity="center_horizontal" />
<ImageButton
android:layout_width="35dp"
android:layout_height="35dp"
android:id="@+id/settingsBtn"
android:layout_row="0"
android:layout_column="2"
android:background="@mipmap/settings_button"
android:layout_marginTop="65dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="30dp" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="345dp"
android:layout_row="1"
android:layout_column="0"
android:layout_columnSpan="3"
android:layout_margin="20dp"
android:layout_gravity="fill_horizontal|center_horizontal">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="view 1"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="view 2"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="view 3"/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rights Reserved"
android:id="@+id/textView2"
android:layout_row="2"
android:layout_column="0"
android:layout_gravity="center_horizontal"
android:layout_columnSpan="3" />
</GridLayout>
在 Java 文件中,我试图像这样手动调整大小:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
double topMenuWidth = 0.1;
ImageButton menuBtn = (ImageButton)findViewById(R.id.menuBtn);
menuBtn.setMaxWidth((int)(width * topMenuWidth));
但是,这是行不通的。我有什么想法可以像我正在尝试的那样调整 menuBtn 的大小吗?或者对于 Android 开发的每个屏幕缩放图像的更自动方式的任何其他想法?
在看了 7 天大量教程视频并用头撞墙之后,我终于找到了灵感!
我已经更改 xml 多次,所以我只 post 最新的对我有用的。但是有 2 个关键项目帮助我克服了这个问题。
- 在 XML 中添加 "scaleType="fitCenter""
- 在 Java 中使用 "settingLayoutParams"
在XML中:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/headerLayout">
<ImageButton
android:id="@+id/menuBtn"
android:contentDescription="@string/menu_button"
android:src="@mipmap/menu_button"
android:background="#00000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:scaleType="fitCenter" />
</RelativeLayout>
在Java中:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
height = metrics.heightPixels;
width = metrics.widthPixels;
double topMenuWidthScale = 0.1;
int topMenuWidth = (int)(topMenuWidthScale * width);
menuBtn = (ImageButton)findViewById(R.id.menuBtn);
menuBtn.setLayoutParams(new RelativeLayout.LayoutParams(topMenuWidth, topMenuWidth));