簡體   English   中英

有孩子的水平LinearLayout從右到左排序?

[英]Horizontal LinearLayout with children ordered right-to-left?

我有一個水平的LinearLayout,它以編程方式填充其子代。 我希望能夠切換到從右到左的布局(即,子0位於最右側,子1位於其左側,等等)。 問題是,我希望布局從RtL切換到LtR並動態返回,這就是為什么例如這個問題與我的情況無關。

似乎沒有任何方法可以直接在代碼中設置它,特別是因為重力是用於對齊而不是排序。

到目前為止,我看到以下解決方法:

  • 在訂購開關上,以相反的順序重新添加子項 (問題:非常難看且耗費資源)。
  • 使用重寫的onLayout()方法實現LinearLayout的子類 (問題:由於輔助布局成員具有限制性可見性,因此大量復制粘貼Android源)。
  • LinearLayout替換為另一個,例如TableLayoutRelativeLayout ,並更改開關上子項的布局參數 (問題:仍然有點kludgey)。

有更直接的解決方案或更好的解決方法嗎?

編輯:澄清一下,我在活動運行期間幾乎創建了一次子項,我可以將它們存儲在輔助數組/集合中,而不會使代碼復雜化。

雖然重新創建子項可能是資源密集型的,但重新排序不應該那么糟糕。 您可以使用getChildAtgetChildCount獲取現有視圖,然后使用帶索引addView覆蓋將它們重新放入。

執行LinearLayout.setRotationY(180)。 您還必須將“線性布局”的子視圖的Y旋轉設置為180。 例如:

private void horizontal() {
    LinearLayout layout = (LinearLayout) v.findViewById(R.id.layout);
    View childView1 = (View) v.findViewById(R.id.childView1);
    View childView2 = (View) v.findViewById(R.id.childView2);

    layout.setRotationY(180);
    childView1.setRotationY(180);
    childView2.setRotationY(180);
}

代碼可能是錯誤的,但你明白了。

暫無
暫無

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

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