如何在CustomLayout中显示Custom ViewGroup的子节点内的按钮?

时间:2014-06-14 19:27:27

标签: android android-layout layout

我制作了一个Custom ViewGroup。从我之前的问题中找到有关此自定义视图组的详细信息here。我在这里遇到的问题是,每当我尝试在自定义Viewgroup内的LinearLayout中添加按钮时,按钮永远不会显示。我尝试了很多东西,但按钮永远不会显示,我是否必须在自定义视图组中执行某些操作,我甚至尝试按下按钮但仍然无效。

Custom ViewGroup的代码:

public class RootViewLayout extends ViewGroup  {
      private View mDrawView;
      private View mSlideView;
      private int mTop;
      private int mDragRange;

      public RootViewLayout(Context context, AttributeSet attrs) {
          super(context, attrs);
      }
      @Override
      protected void onFinishInflate() {
          mDrawView  = findViewById(R.id.content_frame_white);
          mSlideView = findViewById(R.id.slide_frame);       
     }
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         int widthSize = MeasureSpec.getSize(widthMeasureSpec);
         int heightSize = MeasureSpec.getSize(heightMeasureSpec);
         setMeasuredDimension(widthSize, heightSize);   
     }
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom){
            bringChildToFront(mDrawView);
            mDrawView.layout(0, 0, right, bottom);
            mSlideView.layout(0, 0, right/2, bottom);   
     }
}

和XML:

<com.example.drawapp.RootViewLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Root_View_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">
    <com.example.drawapp.DrawView
        android:id="@+id/content_frame_white"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/whitepaperwithcoffeestain">    
    </com.example.drawapp.DrawView>
    <LinearLayout 
        android:id="@+id/slide_frame"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/slidebackgrd"
        android:orientation="vertical">
      <Button 
        android:id="@+id/pen"
        android:layout_width="100dip"
        android:layout_height="wrap_content"
        android:background="@drawable/pic"/>
    </LinearLayout>
</com.example.drawapp.RootViewLayout>

1 个答案:

答案 0 :(得分:1)

对不起评论迟到。如果你还没有解决,显然你必须对你的按钮做同样的事情LinearLayout

View b= mSlideView.findViewById(R.id.pen);
b.layout(0, 0, right/4, bottom); 

选中它并将按钮宽度显示为linearlayout的一半,将高度显示为bottom参数