我不确定如何以编程方式创建此视图,我需要一个分隔符作为屏幕宽度的样式。以下没有绘制任何内容,我不知道如何在这里使用AttributeSet。请帮忙。
谢谢
//in style.xml
<style name="Divider">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">2dp</item>
<item name="android:background">?android:attr/listDivider</item>
</style>
//in code
View view = new View(activity, AttributeSetHere, R.style.Divider);
LinearLayout containerLL = (LinearLayout) activity.findViewById(mContainerViewId);
containerLL.addView(view);
答案 0 :(得分:0)
这是一个非常常见的问题。你真的不能应用这样的风格。虽然,我理解这种API的可取性。 These three links会提供一些解释。
但是你想要实现的目标是视图背景。
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="?android:attr/listDivider" />
编辑添加示例:
在文件 res/values/styles.xml
<style name="example_divider">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">2dp</item>
<item name="android:layerType">software</item>
<item name="android:background">?android:attr/listDivider</item>
</style>
然后将这一行添加到父布局文件
<View style="@style/example_divider" />
这会将视图添加到父布局文件中。
在代码中执行此操作
创建可在运行时膨胀的布局文件。让我们将其命名为 res/layout/divider_layout.xml
。
<View xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/example_divider" />
然后在java land中,您可以扩充布局文件 res/layout/divider_layout.xml
并将其添加到任何父布局。
View view = LayoutInflater.from(getContext()).inflate(R.layout.divider_layout, null, false);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 3);
LinearLayout containerLL = (LinearLayout) activity.findViewById(mContainerViewId);
containerLL.addView(view);