【问题标题】:Curved edges on Activity androidActivity android上的弯曲边缘
【发布时间】:2016-04-21 23:04:15
【问题描述】:

我正在尝试创建一个带有弯曲边缘的弹出窗口。我看到有一个与一年前类似的现有问题,我尝试了许多答案,但没有一个能解决手头的问题。最终,我正在创建一个本身具有弯曲边缘的活动,但是,有一个白色背景,其下方有角,因此效果不起作用。此外,我正在尝试使用 Intents 将其显示在我的其他活动上,但这会创建一个全新的屏幕并将活动未占用的空间涂黑。非常感谢您的帮助,谢谢。

XML 格式:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
        <corners
            android:radius="25dp"
            />
        <solid
            android:color="@color/GreenYellow"/>


</shape>

初始化窗口的JAVA代码:

confirmLayout = (RelativeLayout) findViewById(R.id.confirm_window);
    getWindow().setLayout(width,height);
    confirmLayout.setGravity(RelativeLayout.CENTER_VERTICAL);
    confirmLayout.setBackgroundResource(R.drawable.justcurves);

窗口本身的 XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/confirm_window"
tools:context="com.exampleryancocuzzo.ryan.markettycoon.ConfirmWindow"
android:background="@color/GreenYellow"
>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Press Confirm to proceed"
    android:textSize="25sp"
    android:gravity="center"
    android:textStyle="bold"
    android:layout_centerVertical="true"
    />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Confirm"
    android:padding="10dp"
    android:layout_alignParentBottom="true"
    android:layout_margin="5dp"
    android:textColor="@color/White"
    android:background="@color/Black"
    android:onClick="confirmed"
    />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cancel"
    android:padding="10dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_margin="5dp"
    android:textColor="@color/White"
    android:background="@color/DarkGray"
    android:onClick="cancelled"
    />

</RelativeLayout>

【问题讨论】:

    标签: android xml android-activity


    【解决方案1】:

    为了使活动具有弯曲的边缘,您可以在styles.xml中定义自己的主题..!

    请查看以下示例以了解它,

    rounded_drawable.xml

    <corners android:radius="15dp" />
    
    <solid android:color="#565656" />
    
    <stroke
        android:width="3dp"
        android:color="#ffffff" />
    
    <padding
        android:bottom="6dp"
        android:left="6dp"
        android:right="6dp"
        android:top="3dp" />
    

    接下来制作自己的主题,扩展 styles.xml 中的父 Theme.Dialog

    <style name="ThemeWithCorners" parent="android:Theme.Dialog">
        <item name="android:windowBackground">@drawable/another_test_drawable</item>
    </style>
    

    并在 ma​​nifest 中,将您的主题添加到活动标签中,

    <activity
        android:name=".ActivityName"
        android:label="@string/app_name"
        android:theme="@style/ThemeWithCorners" >
    

    就是这样! 有关样式的更多信息,您可以参考以下网址: http://developer.android.com/guide/topics/ui/themes.html

    【讨论】:

    • 我尝试了这个概念,但由于未在活动中使用 Theme.AppCompat 主题而得到 IllegalStateException
    • 您需要将您的活动类扩展到android.app.Activity,或者第二种选择是将styles.xml中的android:Theme.Dialog替换为Theme.AppCompat.Light.Dialog
    【解决方案2】:

    我的应用扩展了 AppCompatActivity,它引发了 IllegalStateException,但在我将超类更改为 Activity 后就可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多