0

您好我正在尝试将我的自定义视图类定位在我的主要相对布局中。

relativelayout layout_torightof 在 xml 布局中不起作用,并导致其他视图在我的自定义视图类上绘制。这是我的代码。

public class LeftNavBarUI extends RelativeLayout implements OnClickListener {

TextView facebook, twitter;
private static Context mContext;

public LeftNavBarUI(Context context, AttributeSet attrs) {
    super(context);
    mContext = context;
    LayoutInflater li = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    li.inflate(R.layout.leftbar, this);

    facebook = (TextView) findViewById(R.id.facebook);
    twitter = (TextView) findViewById(R.id.twitter);
    facebook.setOnClickListener(this);
    twitter.setOnClickListener(this);
}

@Override
public void onClick(View v) {

    Intent intent = new Intent();
    intent.setClass(mContext, AlbumActivity.class);

    switch(v.getId()){

      case R.id.facebook: 
        {
            intent.putExtra(AppConstants.PROVIDER_NAME, "facebook");
            mContext.startActivity(intent);

           break;
        }
      case R.id.twitter: /** AlerDialog when click on Exit */
      {
          intent.putExtra(AppConstants.PROVIDER_NAME, "twitter");
          mContext.startActivity(intent);
          break;
      }

    }        
}
}

<org.labs.lifeviewmobile.ui.LeftNavBarUI
android:id="@+id/leftbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<TextView
    android:id="@+id/title"
    style="@style/ActionBarView_TabText"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:textStyle="bold"
    android:textSize="13sp"
    android:background="@drawable/bar_gradient"
    android:layout_toRightOf="@+id/leftbar"
    android:paddingLeft="7dip"
    android:paddingBottom="5dip"
    android:paddingTop="5dip" />

<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/title"
    android:animateLayoutChanges="true"
    android:clipChildren="true"
    android:gravity="top"
    android:layout_toRightOf="@+id/leftbar"
    android:listSelector="@drawable/image_background"
    android:numColumns="4"
    android:padding="10dip"
    android:paddingTop="10dp"
    android:scrollbarFadeDuration="0"
    android:scrollbarStyle="outsideOverlay"
    android:visibility="gone"
    android:scrollbars="vertical" />

 <TextView
    android:id="@+id/blank_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/leftbar"
    android:layout_centerVertical="true"
    android:textStyle="bold"
    android:textSize="13sp"
    android:textColor="#ffffff"
    android:paddingLeft="125dp"
    />
  <ProgressBar
    android:id="@+id/pbar"
    style="@android:style/Widget.ProgressBar.Small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:layout_centerInParent="true" />

4

2 回答 2

0

问题在于这条线

android:layout_toRightOf="@+id/leftbar"

它应该是

android:layout_toRightOf="@id/leftbar"

于 2014-03-13T20:55:18.813 回答
0

您忘记将 AttributeSet 传递给父级,将构造函数更改为:

public LeftNavBarUI(Context context, AttributeSet attrs) {
    super(context, attrs);

    // rest of your constructor code
}

这些属性是您在 xml 中设置的,您需要将它们传递给您的父级,否则它们将不适用。

于 2014-03-13T21:19:55.110 回答