[英]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.