簡體   English   中英

如何讓孩子的邊距影響Android中父母的視圖大小?

[英]How can I have a child's margins affect the parent's view size in Android?

我在main.xml中有以下布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <FrameLayout
        android:layout_width="125dp"
        android:layout_height="300dp"
        android:layout_gravity="center"
        android:padding="5dp"
        android:background="#FFFF00">

        <View
            android:id="@+id/placeholder"
            android:layout_width="fill_parent"
            android:layout_height="290dp"
            android:background="#FF0000" />

    </FrameLayout>

</FrameLayout>

還有MainActivity.java中的以下代碼:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        View view = findViewById(R.id.placeholder);

        MarginLayoutParams mlParams = (ViewGroup.MarginLayoutParams)view.getLayoutParams();
        mlParams.topMargin = 50;
        view.setLayoutParams(mlParams);
    }

}

邊距將應用於孩子的視圖,但完全不會影響父母的視圖大小。 我可以使用以下代碼行“修復”此問題:

((View)view.getParent()).getLayoutParams().height += 50;

但是,如何在不顯式更改父母身高的情況下做到這一點呢? 這有可能還是沒有太大意義?

如果希望內部FrameLayout隨子尺寸增加,則必須將其高度設置為wrap_content

如果給它一個固定的高度(如此處所做的那樣),則沒有任何改變。 無論您調整子代的大小/邊距如何,它都將保持固定大小。 這意味着如果您想避免wrap_content(如您已經說過的),還必須手動調整父級大小。

順便說一句:放置內容的根視圖組始終是FrameLayout。 這意味着您可以在FrameLayout的FrameLayout中創建FrameLayout。 :)可能會不必要地加深視圖層次感,具體取決於您是否在此處獲得其他視圖。 較深的層次結構不利於性能,請盡可能保持平坦。 也許看看<merge />標簽

暫無
暫無

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

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