亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以編程方式聲明視圖時應用了哪些單位?

以編程方式聲明視圖時應用了哪些單位?

翻過高山走不出你 2022-06-08 16:39:45
在 axml 文件中添加視圖時,可以簡單地指定視圖屬性的大小和單位,例如:<TextView     android:TextSize = "10sp"     android:layout_marginTop = "10dp" />正如這個答案中所說,有特定目的的特定單位。我的主要問題是,當以動態方式以編程方式(通過代碼)應用大小時,適用于大小的單位是什么?例如,當像這樣聲明 TextSize 時:TextView tv = new TextView();tv.TextSize = 10;文本大小的單位是什么?sp? DP?像素?最重要的是,我怎樣才能改變它們以滿足我的需要?
查看完整描述

2 回答

?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

如果你以編程方式生成文本視圖如下代碼


TextView tv = new TextView();

tv.setTextSize(10); // Sets text in sp (Scaled Pixel).

如果你想用其他單位設置文本大小,你可以通過以下方式實現。


TextView tv = new TextView();

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 10); // Sets text in px (Pixel).

tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); // Sets text in dip (Device Independent Pixels).

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10); // Sets text in sp (Scaled Pixel).

tv.setTextSize(TypedValue.COMPLEX_UNIT_PT, 10); // Sets text in pt (Points).

tv.setTextSize(TypedValue.COMPLEX_UNIT_IN, 10); // Sets text in in (inches).

tv.setTextSize(TypedValue.COMPLEX_UNIT_MM, 10); // Sets text in mm (millimeters).

默認情況下,Android 使用“sp”作為文本大小,使用“px”作為視圖大小。


對于其他視圖尺寸,我們可以設置為 px(像素),但如果您想自定義單位,您可以使用自定義方法


/**

     * Converts dip to px.

     *

     * @param context -  Context of calling class.

     * @param dip     - Value in dip to convert.

     * @return - Converted px value.

     */

    public static int convertDipToPixels(Context context, int dip) {

        if (context == null)

            return 0;

        Resources resources = context.getResources();

        float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, resources.getDisplayMetrics());

        return (int) px;

    }

通過上述方法,您可以將 YOUR_DESIRED_UNIT 轉換為像素,然后設置為查看。你可以更換


TypedValue.COMPLEX_UNIT_DIP


根據您的用例使用上述單位。您也可以反之亦然,讓 px 下降,但我們不能分配給自定義單位來查看,所以這就是我這樣使用它的原因。


我希望我解釋得很好。


查看完整回答
反對 回復 2022-06-08
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

第一的:


我認為您應該盡可能避免以編程方式設置大小。


第二:


px Pixels :對應于屏幕上的實際像素。


dp 或 dip 與密度無關的像素-:基于屏幕物理密度的抽象單位。這些單位是相對于 160 dpi 屏幕的,因此 1 dp 是 160 dpi 屏幕上的一個像素


sp Scale-independent Pixels- :這類似于 dp 單位,但它也根據用戶的字體大小偏好進行縮放


在你的第三個問題中,我認為:


例如 :


對于edittext,您不應該像這樣對寬度使用常量:


  <TextView

        android:layout_width="100dp"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:text="@string/banklist_firstselectbank"

        style="@style/TextAppearanceHeadline2"

        android:gravity="center"/>

我認為最好像這樣使用邊距開始和邊距結束:


 <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"

        android:text="@string/banklist_firstselectbank"

        style="@style/TextAppearanceHeadline2"

        android:layout_marginEnd="50dp"

        android:layout_marginStart="50dp"

        android:gravity="center"

        />

并盡可能多地使用:重力等字段而不是常數。


查看完整回答
反對 回復 2022-06-08
  • 2 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號