This question has been asked before: AlertDialog custom title has black border
But was not answered satisfactorily - and is missing some information.
I'm trying to create a custom dialog in Android without a title and without any buttons along the bottom.
However, the resulting dialog has black "borders"/"spacing"/something along the top and bottom of the view.
From the Documentation:
A dialog made with the base Dialog class must have a title. If you
don't call setTitle(), then the space used for the title remains
empty, but still visible. If you don't want a title at all, then you
should create your custom dialog using the AlertDialog class. However,
because an AlertDialog is created easiest with the AlertDialog.Builder
class, you do not have access to the setContentView(int) method used
above. Instead, you must use setView(View). This method accepts a View
object, so you need to inflate the layout's root View object from XML.
So, that's what I did:
Welcome.java
public class Welcome extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.welcomedialog, (ViewGroup)findViewById(R.id.layout_root));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
builder.create().show();
}
}
welcomedialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/texturebg"
android:id="@+id/layout_root"
android:orientation="vertical"
android:padding="40px">
...
</LinearLayout>
NOTE: I've tried using FrameLayout
as the root ViewGroup
instead of LinearLayout
as per a suggestion I found somewhere - but that didn't help.
Result
setBackgroundDrawable Suggestion
public class Welcome extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.welcomedialog, (ViewGroup)findViewById(R.id.layout_root));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
AlertDialog dialog = builder.create();
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
dialog.show();
}
}
Didn't work for me.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…