簡體   English   中英

Android按鈕大小在不同設備上更改(寬度設置為dp)

[英]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,則它將根據設備的屏幕密度而變化。 為了在不同的屏幕密度條件下保持按鈕大小不變,您需要在按鈕的寬度中使用ptinmm

請檢查鏈接: Android上的“ px”,“ dp”,“ dip”和“ sp”有什么區別?

要以編程方式設置每個孩子的寬度,

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM