为什么将孩子夹在自定义吐司中?

问题描述 投票:0回答:1

我想用一个视图创建自定义吐司,这与父视图有点不同。所以我做了这样的事情

这是我的自定义吐司

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/toast_root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="50dp"
    android:background="#000000"
    android:clipChildren="false"
    android:clipToPadding="false"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:padding="15dp">

    <TextView
        android:id="@+id/digit_display"
        android:layout_width="96dp"
        android:layout_height="96dp"
        android:layout_marginTop="-24dp"
        android:layout_marginEnd="15dp"
        android:layout_marginBottom="24dp"
        android:background="@drawable/round_button"
        android:gravity="center"
        android:text="1"
        android:textSize="64sp" />

    <TextView
        android:id="@+id/description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="TextView"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:textStyle="bold" />
</LinearLayout>

round_button.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="oval">
            <solid android:color="#000000"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="#2C2C2C"/>
        </shape>
    </item>
</selector>

并且在Java代码中,我像这样使用它

LayoutInflater li = getLayoutInflater();
View v = li.inflate(R.layout.toast, null);
TextView numberView = v.findViewById(R.id.digit_display);
TextView descriptionView = v.findViewById(R.id.description);
numberView.setText(number);
descriptionView.setText(description);

Toast t = new Toast(getApplicationContext());
t.setDuration(Toast.LENGTH_LONG);
t.setView(v);
t.show();

而且我可以看到我的烤面包。但是digit_display TextView是从顶部剪切的,但我希望从吐司中看到它(就在该视图的顶部)。我该如何实现?如果那不起作用。

编辑我试图理解为什么此示例不起作用,如果我在其他项目形式的简单形式中使用相似的结构,则它起作用。

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="25dp"
        android:background="@drawable/form_desing"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="25dp">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_marginTop="-50dp"
            android:layout_marginBottom="50dp"
            android:foreground="@drawable/clover_"
            android:contentDescription="@string/fourbit_clover_icon" />

        <include layout="@layout/email_input" />
        <include layout="@layout/password_input" />
        <include layout="@layout/buttons" />
    </LinearLayout>

任何想法?

java android toast
1个回答
0
投票

将最外面的Layout视为Toast的根视图,并在其中排列项目。您不仅限于仅使用一个LinearLayoutRelativeLayout。不要尝试从根视图中退出:它将被裁剪。

© www.soinside.com 2019 - 2024. All rights reserved.