我创建了一个使用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>