0

場景:I've four buttons arranged Relative Layout。這些按鈕的文本隨應用程序生命而變化,這會使按鈕縮短或根據文本長度進行擴展。使用:RelativeLayout.getChildAt()。setText();修復佈局問題

Q1)但我需要每個按鈕佔據屏幕寬度的40%,但高度不一。 Q2)特別是我的代碼需要訪問按鈕使用getChildAt()

我應該使用什麼類型的佈局,以取代的RelativeLayout到按鈕的寬度設置爲屏幕寬度的40%,特別是這樣我可以訪問使用getChildAt()這些按鈕? SomeLayout.getChildAt();以便佈局是按鈕的直接父項。

<RelativeLayout android:id="@+id/buttonRelativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:layout_margin="10dp"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/optionButton1" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/optionButton2" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/optionButton3" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/optionButton4" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 
</RelativeLayout> 
+0

您的按鈕當前如何排列?發佈您的佈局XML –

+0

請查看谷歌照片鏈接 - https://goo.gl/photos/mBakhAci4W1Sj2bK6 – Johnny

回答

1

你實際上只是在運氣。 Android剛剛發佈了一個新的百分比支持庫。他們還沒有文檔,但這是一個很好的示例項目,您可以使用它來了解如何使用該庫。它基本上允許您按屏幕的百分比調整視圖窗口小部件的大小。

https://github.com/JulienGenoud/android-percent-support-lib-sample

而且這裏有兩篇文章談論它還有:

http://www.androidauthority.com/using-the-android-percent-support-library-630715/

http://inthecheesefactory.com/blog/know-percent-support-library/en

0

現在我想不出任何佈局元素可以讓你做到這一點。 你可以試試這個,您的代碼onCreate或在您的init的意見/變量的方法之一,得到的按鈕和大小設置爲屏幕的40%,是這樣的:

Display display = getWindowManager().getDefaultDisplay(); 
Point screenSize = new Point(); 
display.getSize(screenSize); 

RelativeLayout rlParent = findViewById(R.id.<RELATIVE_LAYOUT_ID>); 

for(int i = 0; i < 4; i++) 
{ 
    View btn = rlParent.getChildAt(i); 
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)btn.getLayoutParams(); 
    params.width= screenSize.y * 0.4f;//40% 
    btn.setLayoutParams(params); 
} 
+0

感謝Marco! params.height是否將按鈕的寬度設置爲屏幕寬度的40%? – Johnny

+0

啊,對不起,我的意思是'寬度.. ..這是一個漫長的一天:) –

+0

我編輯了正確的尺寸名稱的答案 –

1

安卓%的支持庫確實給予了Android部件上的百分比比真棒工作通過取代我們傳統的屏幕LinearLayout

Code and Concept Here !

Github demo Here !

<android.support.percent.PercentRelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/fifty_huntv" 
     android:background="#ff7acfff" 
     android:text="20% - 50%" 
     android:textColor="@android:color/white" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     app:layout_heightPercent="20%" 
     app:layout_widthPercent="50%" /> 
    <TextView 
     android:layout_toRightOf="@id/fifty_huntv" 
     android:background="#ffff5566" 
     android:text="80%-50%" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     app:layout_heightPercent="80%" 
     app:layout_widthPercent="50%" 
     /> 
</android.support.percent.PercentRelativeLayout> 

真正真棒!