2

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

我面临的问题是,当我用 Crouton 显示它时,TextView 的宽度计算不正确,导致文本被切断。这很奇怪,因为它只发生在我的 Fragment 第一次创建时。如果我将屏幕旋转到横向并再次旋转到纵向,它会正常显示。我在我的片段的 onStart() 方法中显示油煎面包块,我在运行时添加到 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的错误吗?

更新:

这是我用于面包块的自定义视图:

<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,我在其中替换了我的片段。以下是我的 Activity 的布局:

<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>
4

0 回答 0