我创建了一个自定义视图以使用 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>