Crouton自定义视图与无限持续时间

4
我一直在思考如何使用Crouton,创建自定义视图的Crouton弹出窗口后,我注意到两件事: - 布局在创建时会稍微修改,并且如果更新视图,则会进行更正 - 没有办法添加样式来制作自定义的Crouton,或者我不知道有什么方法... 请问是否有人能够提供一个整洁的解决方案来解决这些问题。
Crouton创建代码:
View crouton_view = getLayoutInflater().inflate(R.layout.crouton_layout, null);
Crouton Date_crounton = Crouton.make(this, crouton_view);
crouton_view.setBackgroundColor(Color.rgb(00, 153, 204));
Date_crounton.show();

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/crouton_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<EditText
    android:layout_width="match_parent"
    android:layout_height="50dp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#b4b4b4" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/crouton_cancel"
        style="?android:attr/actionButtonStyle"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Cancel"
        android:textSize="14sp" />

    <ImageView
        android:layout_width="1dp"
        android:layout_height="30dp"
        android:layout_gravity="center_vertical"
        android:background="#b4b4b4" />

    <Button
        android:id="@+id/crouton_ok"
        style="?android:attr/actionButtonStyle"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="OK"
        android:textSize="14sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="5dp"
        android:background="#b4b4b4" />
</LinearLayout>

3个回答

10

请尝试使用以下代码

View customView = getActivity().getLayoutInflater().inflate(R.layout.crouton_addexam, null);
final Configuration CONFIGURATION_INFINITE = new Configuration.Builder().setDuration(Configuration.DURATION_INFINITE).build();
final Crouton crouton = Crouton.make(getActivity(),customView,R.id.btnTest,CONFIGURATION_INFINITE);
crouton.setConfiguration(new Configuration.Builder().setDuration(Configuration.DURATION_INFINITE).build());
test.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            crouton.hide();

    }
});

感谢 @Joseph ALbert Madia 的建议,这真的很有帮助。 - Jenny Casarino
@Joseph ALbert Madia 你好,为什么无限配置提供了两次?
  1. 作为“make”方法的参数
  2. 作为“setConfiguration”方法的参数
- Singed
我想将这个添加到一个框架布局中,就像这样:Crouton.makeText(MainActivity.this, "请检查您的互联网连接", Style.ALERT, R.id.main_crouton).setConfiguration(new Configuration.Builder().setDuration(Configuration.DURATION_INFINITE).build()).show();。我该如何实现呢? - Kaustubh Bhagwat

4

我在Crouton上使用这段代码:
你可以使用以下代码:

final Configuration CONFIGURATION_INFINITE = new Configuration.Builder()
                              .setDuration(Configuration.DURATION_INFINITE)
                              .build();
final Crouton infiniteCrouton;
infiniteCrouton = Crouton.makeText(this, "TEXT", Style.INFO); 
infiniteCrouton.setConfiguration(CONFIGURATION_INFINITE);
infiniteCrouton.setOnClickListener(new View.OnClickListener() {
                                  @Override
                                  public void onClick(View v) {
                                    Crouton.hide(infiniteCrouton);
                                  }
                                });
infiniteCrouton.show();

我想将这个添加到一个框架布局中,就像这样:Crouton.makeText(MainActivity.this, "请检查您的互联网连接", Style.ALERT, R.id.main_crouton).setConfiguration(new Configuration.Builder().setDuration(Configuration.DURATION_INFINITE).build()).show();。我该如何实现呢? - Kaustubh Bhagwat

0

是的,无法通过自定义视图向 Crouton 添加 Style。但您可以添加 Configuration

如果要更新视图,则需要在 Crouton 外部保留引用并自行更新。

此外,我不确定从用户体验角度来看,将 Crouton 用作某种模态对话框是否是一个好主意。


感谢您的帮助,似乎必须添加到库中才能使用样式。就用户体验而言,应该是如何添加 crouton 而不是它本身,我认为正确的实现会很好看。 - alk
对不起,我不明白。这是另一个问题吗? - Ben Weiss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接