![](/img/trans.png)
[英]Height and width in dp looks different on different devices (Android)
[英]Android button size changes at different devices (width is set to dp)
我正在設計一個需要自定義按鈕的應用程序。 我繼承了Android Button,並在布局xml中將其寬度設置為300dp。 但是,我發現按鈕的大小在不同的設備上正在變化。 這是示例:
我在原始設備中的用戶界面: Galaxy S5
我在新設備上的用戶界面: Nexus 5X
我在其他設備上的用戶界面: Galaxy Note4 (在本次試用中,我將左側按鈕設置為使用sp而不是dp)
看來我的新設備的整體布局比例都較小,即使它們都是1080 x 1920像素。
我也嘗試使用sp,但是它的行為相同(問題)。 我的猜測是風格? 誰能給我更多的想法。 謝謝!
---更新---嗨,我改一下我的問題。
我正在尋找一種方法來制作寬度固定為(相對) 任何設備上1/3屏幕寬度的按鈕。 並且其文本也相應地更改。 我認為最終的方法是將所有內容轉換為像素,並在程序中手動分配這些值。 我曾經認為使用dp和sp是實現此目的的簡便方法,但事實並非如此:(
如果您使用的是dp,則它將根據設備的屏幕密度而變化。 為了在不同的屏幕密度條件下保持按鈕大小不變,您需要在按鈕的寬度中使用pt , in或mm 。
要以編程方式設置每個孩子的寬度,
view.getLayoutParams().width = getScreenWidth() / VIEWS_COUNT_TO_DISPLAY;
和屏幕尺寸如下
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics).widthPixels;
現在,如果要設置文本而不是使用SP 。
我想這就是你想要的。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:weightSum="3">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/test"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Normal Charge (Testing)"/>
</LinearLayout>
</LinearLayout>
通過使用weightSum和layout_weight,可以將項目固定為屏幕的1/3寬度。
在imageview內部,android:scaleType =“ fitXY”
這意味着將更改圖像的大小以匹配imageview的大小。
如果不需要,可以刪除該屬性。
對於圖像,最好的方法是在不同的文件夾中准備不同大小的圖像:
對於mdpi,應為100X100
對於ldpi,應為75X75
對於hdpi,應為150X150(例如Xperia U)
對於xhdpi,應為200X200(例如Galaxy S3,Galaxy Note II,Xperia S)
對於xxhdpi,應為300X300(例如Galaxy S4,Galaxy S5,Xperia Z,Xperia Z1,Xperia Z2)
上面的大小僅是示例,您必須找到基本情況,如果需要,我可以詳細說明。
希望對您有所幫助,謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.