正在错误地计算Crouton中使用的自定义视图的宽度

时间:2014-03-11 19:37:49

标签: android android-fragments crouton

我创建了一个使用Crouton库显示的自定义视图。此视图具有一些边距,背景和带有MATCH_PARENT宽度的TextView。此TextView是多行的,并且左侧可绘制。

我面临的问题是,当我用Crouton显示它时,TextView的宽度计算不正确,使文本被切断。这很奇怪,因为它只在我的Fragment第一次创建时才会发生。如果我将屏幕旋转为横向并再次旋转为纵向,则表示正常显示。我在片段的onStart()方法中显示了一个crouton,我在运行时添加了Activity。

以下屏幕截图显示了烤面包片的第一次出现。

以下显示旋转屏幕两次后的烤面包片的外观。

我正在通过以下方式创建烤面包片:

Crouton.make(getActivity(), inflater.inflate(R.layout.crouton_explicacao_qr_code, container, false), container).show();

如果我手动充气自定义视图,将其添加到容器(FrameLayout),它就像第二个截图一样。

inflater.inflate(R.layout.crouton_explicacao_qr_code, container, true)

所以,它似乎与我的自定义视图无关。

如果我使用空容器对自定义视图进行充气,它会丢失其边距,因为它不知道要在哪里添加它以准备边距。

任何人都可以帮助我吗?这是一个Crouton的错误吗?

更新:

这是我用于Crouton的自定义视图:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              style="?croutonQrCode">

    <com.devspark.robototextview.widget.RobotoTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/explicacao_qr_code"
        android:drawableLeft="@drawable/ic_qrcode_puro"
        android:drawablePadding="@dimen/thin_padding"
        style="?textCrouton" />

</FrameLayout>

此布局中使用的样式如下:

<style name="crouton">
    <item name="android:background">@drawable/crouton_background</item>
    <item name="android:layout_marginTop">@dimen/crouton_margin</item>
    <item name="android:layout_marginRight">@dimen/crouton_margin</item>
    <item name="android:layout_marginBottom">@dimen/crouton_margin</item>
    <item name="android:layout_marginLeft">@dimen/crouton_margin</item>
</style>

<style name="crouton.qrcode">
    <item name="android:layout_marginTop">40dp</item>
</style>

<style name="text">
    <item name="typeface">roboto_light</item>
    <item name="android:textColor">@color/text</item>
</style>

<style name="text.crouton">
    <item name="android:singleLine">false</item>
    <item name="android:textColor">@color/title</item>
    <item name="android:textSize">@dimen/title_font_size</item>
    <item name="typeface">roboto_regular</item>
</style>

我的容器是FrameLayout,我在那里替换我的碎片。以下是我的活动布局:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.meubilhete.ui.DrawerActivity">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/screen_background" />
    <!-- The navigation drawer -->
    <FrameLayout
        android:id="@+id/menu"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start" />
</android.support.v4.widget.DrawerLayout>

0 个答案:

没有答案