簡體   English   中英

Android - 方向改變時改變按鈕文字大小

[英]Android - change button text size when orientation changes

我有一個按鈕(它是一個 Bootstrap 按鈕,基於 com.beardedhen:androidbootstrap)。

這是xml文件中的布局寬度和高度:

android:layout_width="0dp"
android:layout_height="wrap_content"

我想要的是在方向更改時修改按鈕文本的文本大小(並且還取決於各種屏幕大小)。

我想這樣做的原因是因為在橫向上,按鈕有更多的空間而不是在縱向上。

我讀到每次方向改變時都會調用 onCreate 。

我在 onCreate 中使用以下代碼:

DisplayMetrics dm = new DisplayMetrics();
float height = dm.heightPixels;
float width = dm.widthPixels;
BootstrapButton btn = findViewById(R.id.btn);
float density = getResources().getDisplayMetrics().density;
btn.setTextSize((width / density) / 32);

該代碼計算屏幕的寬度和高度並相應地設置文本大小。 這樣,我就可以根據設備的屏幕及其方向(寬度變為高度,反之亦然)獲得正確的文本大小。

問題是當方向改變時,這段代碼不起作用。

我錯過了什么?

謝謝你的幫助。

雖然我認為這不是最好的方法,但ConstraintLayouts可以幫助自動管理寬度。
但是如果你想堅持這種方法,試試這個:而不是onCreate ,嘗試在onConfigurationChanged中這樣做。 就像是:

活動課

override fun onConfigurationChanged(newConfig: Configuration?) {
    super.onConfigurationChanged(newConfig)

    if (newConfig?.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // Do Landscape calculation
    }
    else {
        // Do Portrait calculation
    }
}

AndroidManifest.xml
<activity android:name="[.YourActivity]" android:configChanges="orientation|keyboardHidden|screenSize" />

您應該閱讀 Android 的Constraint Layout 在布局編輯器中,您可以指定按鈕的約束條件,並定義它在不同布局和屏幕尺寸下的外觀。

另請注意,雖然您編寫的代碼可能有效,但手動計算屏幕密度是一項危險且棘手的任務,應盡可能避免。 正是出於這個原因,Android 使用dp而不是px 在必須在pxdp之間進行轉換或其他復雜情況的情況下,應使用您編寫的代碼。 根據屏幕大小調整按鈕大小之類的事情非常常見,Android 提供了直接在布局編輯器中執行此操作的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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