簡體   English   中英

當布局比屏幕寬時選擇包裝視圖

[英]Choose wrapping view when layout is wider than screen

我有一個圖像和幾個文本視圖的水平線性布局。 在某些語言(德語...)中,文本是如此之長,以至於所有內容都只能放在一行上,因此布局必須比屏幕寬。 為防止這種情況,android自動使文本視圖換行到下一行。

有什么方法可以選擇將哪些文本視圖包裝起來? 目前看來,添加到布局的最后一個視圖是環繞的視圖。 但是,我真的很想讓其中一個較早的文本視圖換行,並讓最后一個文本視圖始終顯示在一行上。 這可能嗎? 我已經將涉及的大多數視圖分類了,因此我可以覆蓋受保護的方法。

這是我的代碼的大致輪廓:

<LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/some_icon" />
  <TextView
    android:id="@+id/can_wrap_if_neccessary"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/some_really_long_text" />
  <TextView
    android:id="@+id/shouldnt_wrap"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/some_more_really_long_text" />
</LinearLayout

我們可以知道將要換行的文本。

邏輯: 首先計算文本的寬度如果文本的寬度大於屏幕的寬度,則該文本將被換行

如果文本將被換行,則以下方法返回true,否則返回false

源代碼

boolean isTextWrapped(String text) {
        boolean isWrapped = false;
        int widthOfText = 0;
        int deviceWidth = 0;
        // calculate widthOftext
        TextView textView = new TextView(this);
        textView.setVisibility(View.GONE);
        Rect bounds = new Rect();
        Paint textPaint = textView.getPaint();
        textPaint.getTextBounds(text, 0, text.length(), bounds);
        widthOfText = bounds.width();
        System.out.println("...text view width..."+widthOfText);
        // calculate width of screen
        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        deviceWidth = displaymetrics.widthPixels;
        System.out.println("...text view width..."+widthOfText+"...screen width..."+deviceWidth);
        isWrapped = widthOfText > deviceWidth ? true : false;
        return isWrapped;

    }

我知道了:解決方案是在我要包裝的視圖上設置layout_weight屬性,而不是在我不想包裝的視圖上完全不設置它。 具有layout_weight的任何視圖將優先於沒有view_wrap的視圖進行包裝。

暫無
暫無

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

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