relativelayout wrap_content无法正常工作

时间:2016-10-27 10:57:09

标签: android android-layout android-wrap-content

这是我的xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/tt">



<RelativeLayout
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/trashParent"
 android:visibility="visible"
 android:orientation="horizontal"
 android:layout_alignParentBottom="true">

        <LinearLayout
            android:background="@drawable/bgtrash"
            android:layout_width="match_parent"
            android:layout_height="140dp"
            android:baselineAligned="false"
            android:orientation="horizontal">
            </LinearLayout>


</RelativeLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:id="@+id/parentTrash"
    android:layout_marginBottom="30dp"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true">

    < 
</LinearLayout>

我们可以看到ID为android:id="@+id/tt"

的父视图

它的高度和宽度是wrap_content我知道如果某个孩子有android:layout_alignParentBottom="true"所以wrap_conent不起作用就像match_parent一样

但现在我在java中这样做我必须将方法隐藏并显示孩子

private void hide(){
    trashParent.setVisibility(View.GONE);
    parentTrash.setVisibility(View.GONE);
} 

private void show(){
    trashParent.setVisibility(View.VISIBLE);
    parentTrash.setVisibility(View.VISIBLE);
}

现在,当我隐藏孩子并使其成为wrap_content时,它仍然匹配父,这就是运行代码

  hide();
  RelativeLayout.LayoutParams chatHeadParentParamst = new     RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);


   tt.setLayoutParams(chatHeadParentParamst);
   tt.setBackgroundColor(Color.YELLOW);

将tt height更改为wrap_content,因为它与父级匹配一段时间         但更改为wrap_conent后仍然像match_parent         我认为孩子仍然没有Gone而我将它设置为wrap_conent

因为当我使用延迟工作时延迟

hide();

Handler handler = new Handler(Looper.getMainLooper());
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            hide(); // i dont no must i call it again to work

            RelativeLayout.LayoutParams chatHeadParentParamst = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);

            tt.setLayoutParams(chatHeadParentParamst);
            tt.setBackgroundColor(Color.YELLOW);

            Log.d("called now delay","wwwwwwwww");

        }
    };
    handler.postDelayed(runnable, 1100);

延迟现在它的大小chnage到wrap_conent没有延迟它像match_parent一样,但所有子可见性是gone任何solotio没有延迟我不能使用LinerLayout我必须使用RaltiveLayout因为我需要一个孩子一个

0 个答案:

没有答案