无法在工具栏

时间:2016-09-13 10:28:12

标签: android android-layout

我遇到了这么奇怪的问题。

我正忙着处理下面的图片:

Cart counter

问题是我需要让TextView(图像中的“9”)向上移动。此图片+ textview位于工具栏中。

在布局文件中,我可以随意上下移动图像,但由于工具栏中缺少空间,它会被切断。因此,如果我向下移动图像,则会发生底部切割的购物车图标。

我需要该计数器向上移动。我在下面尝试了TextView:

  

机器人:paddingBottom来= “9dp”

  

机器人:layout_marginBottom = “9dp”

但他们都没有移动textview。

请参阅下面的布局文件:

<RelativeLayout android:id="@+id/counterPanel"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

  <ImageView
    android:id="@+id/cartCountIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/cart_dark"/>

  <TextView
    android:id="@+id/cartCount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerInParent="true"
    android:textColor="@color/orange_6"
    tools:text="7"/>

</RelativeLayout>

这就是我在代码中使用这种布局的方式:

public static Drawable buildCartDrawable(Context context, int count, boolean isCartLight) {
    LayoutInflater inflater = LayoutInflater.from(context);

    View view = inflater.inflate(R.layout.item_cart_counter_menu_item, null);
    TextView textView = (TextView) view.findViewById(R.id.cartCount);
    ImageView cartIcon = (ImageView) view.findViewById(R.id.cartCountIcon);
    int backgroundImageId;

    if (isCartLight) {
      textView.setTextColor(ContextCompat.getColor(context, R.color.white));
      backgroundImageId = R.drawable.cart_empty;
      if (count > 0) {
        backgroundImageId = R.drawable.cart;
      }
    } else {
      backgroundImageId = R.drawable.cart_empty_dark;
      if (count > 0) {
        backgroundImageId = R.drawable.cart_dark;
      }
    }
    cartIcon.setBackgroundResource(backgroundImageId);

    if (count == 0) {
      textView.setVisibility(View.GONE);
    } else if (count < 10) {
      textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
    } else {
      textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11);
    }

    textView.setText(String.valueOf(count));
    view.measure(
            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    view.layout(0, 0, cartIcon.getMeasuredWidth(), cartIcon.getMeasuredHeight());
    view.setDrawingCacheEnabled(true);
    view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
    Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
    view.setDrawingCacheEnabled(false);

    return new BitmapDrawable(BobeApplication.getAppContext().getResources(), bitmap);
  }

我需要TextView最多向上移动大约3 / 4dp,但它似乎在工具栏中保持居中,我无法看到修复此问题。

1 个答案:

答案 0 :(得分:0)

使用FrameLayout而不是RelativeLayout。要textView添加layout_gravity =“center”,也可以尝试添加marginBottom

<FrameLayout android:id="@+id/counterPanel"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

  <ImageView
    android:id="@+id/cartCountIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/cart_dark"/>

  <TextView
    android:id="@+id/cartCount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="2dp"
    android:textColor="@color/orange_6"
    tools:text="7"/>

</FrameLayout>