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

AttributeSet を親に渡すのを忘れました。コンストラクターを次のように変更します。

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

    // rest of your constructor code
}

属性は xml で設定したものです。それらを親に渡す必要があります。そうしないと適用されません。

于 2014-03-13T21:19:55.110 に答える
0

問題はこの行にあります

android:layout_toRightOf="@+id/leftbar"

そのはず

android:layout_toRightOf="@id/leftbar"

于 2014-03-13T20:55:18.813 に答える