2016-04-21 14 views
0

Ich versuche, ein Popup-Fenster mit abgerundeten Kanten zu erstellen. Ich habe gesehen, dass es vor einem Jahr eine ähnliche Frage gibt, mit vielen Antworten, die ich ausprobiert habe und von denen keines das Problem löst. Letztendlich erstelle ich eine Aktivität, die selbst gekrümmte Kanten hat, jedoch gibt es einen weißen Hintergrund, der Ecken darunter hat, so dass der Effekt nicht funktioniert. Außerdem versuche ich, dies über meine andere Aktivität mit Intents anzuzeigen, aber dies erzeugt einen ganz neuen Bildschirm und macht den nicht von der Aktivität eingenommenen Raum schwarz. Ich schätze die Hilfe sehr, danke. This is what the activity looks like right nowGekrümmte Kanten auf Aktivität Android

XML-Format:

<?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-Code Initialisierung des Fensters:

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

XML für Fenster selbst:

<?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> 

Antwort

0

Für die Aktivität mit abgerundeten Kanten machen, können Sie definiere dein eigenes Thema in der styles.xml ..!

Überprüfen Sie bitte das folgende Beispiel eine Vorstellung davon zu bekommen,

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" /> 

Next Ihr eigenes Thema machen, die die Eltern Theme.Dialog in erstreckt styles.xml:

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

und im manifestieren, Ihr Thema in der Aktivitäts-Tag hinzufügen,

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

Das ist alles! Für weitere Informationen über die Stile, können Sie die die folgenden URL verweisen: http://developer.android.com/guide/topics/ui/themes.html

+0

ich dieses Konzept versucht, und ich habe eine IllegalStateException dafür erhalten, kein Theme.AppCompat Theme in der Aktivität –

+0

zu verwenden. Du musst deine Aktivitätsklasse auf 'android.app.Activity' erweitern oder die zweite Option ist' android: Theme.Dialog' in styles.xml mit 'zu ersetzen Theme.AppCompat.Light.Dialog' –

0

Meine App erweitert AppCompatActivity, die eine Illegal warf, funktioniert aber sobald ich die Oberklasse Aktivität geändert