简体   繁体   English

应用程序中所有对话框的自定义主题

[英]Custom theme of all dialogs in an app

Is there any similar theme generator as HoloColors or Action Bar Style Generator which would help us change theme of Dialogs and AlertDialogs in our apps? 是否有与HoloColorsAction Bar Style Generator相似的主题生成 ,可以帮助我们在应用程序中更改Dialogs和AlertDialogs的主题?

My app uses Holo theme and I managed to change style of views such as EditTexts and Buttons but they remain unchanged when they appear in a Dialog. 我的应用程序使用Holo主题,并且设法更改了诸如EditTexts和Buttons之类的视图样式,但是当它们出现在Dialog中时,它们保持不变。 I would also like to change color of the blue line under a title. 我还想更改标题下蓝线的颜色。

I've found a few question and answers related to this topic but they practically say it's not even possible. 我已经找到了与此主题相关的一些问题和答案,但实际上他们说这是不可能的。 I cannot believe it isn't. 我不敢相信不是。

At least for the AlertDialog it is possible. 至少对于AlertDialog是可能的。 here i posted my solution of a function which is called at some point (for example button click) in your code and creates an alert dialog own layout over your screen.. the layout is a normal layout.xml which you can define the way you want. 我在这里发布了我的函数的解决方案,该函数在您的代码中的某个点(例如单击按钮)被调用,并在屏幕上创建一个警报对话框自己的布局。想。 works perfect for me! 最适合我!

private void showAddUserGeneratedStationDialog() {

        AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                AmplifyActivity.this);

        LayoutInflater inflater = getLayoutInflater();

            //inflate your layout.xml
        alertDialog
                .setView(inflater.inflate(R.layout.dialog_add_station, null));

            //show dialog over activity screen
        final AlertDialog ad = alertDialog.show();

            //put actions to your ui-elements
        Button cancelBtn = (Button) ad
                .findViewById(R.id.list_user_generated_cancelBU);
        cancelBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ad.cancel();
            }
        });

        Button doneBtn = (Button) ad
                .findViewById(R.id.list_user_generated_doneBU);
        doneBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                            //get sth from your layout f.e. some textInput
                String stationUrl = ((TextView) ad
                        .findViewById(R.id.list_user_generated_stationURLInput))
                        .getText().toString();

                    // did some other things

                ad.dismiss();

            }
        });

    }

and my layout.xml 和我的layout.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_user_generated_addStationDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#99000000"
    android:clickable="true"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:padding="10dp"
        android:background="#000"
        android:orientation="vertical" >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/list_user_generated_cancelBU"
                style="@style/ButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center|right"
                android:text="@string/cancel" />

            <TextView
                style="@style/AmplifyHeadlineElement"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="@string/list_userGenerated_addStation" />

            <Button
                android:id="@+id/list_user_generated_doneBU"
                style="@style/ButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center|right"
                android:text="@string/done" />
        </LinearLayout>

        <EditText
            android:id="@+id/list_user_generated_stationURLInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginTop="10dp"
            android:background="#FFF"
            android:ems="10"
            android:hint="@string/list_userGenerated_addUrlExample"
            android:inputType="textNoSuggestions" >
        </EditText>

        <!-- MORE BUT I DELETED  IT FOR BETTER OVERVIEW -->
    </LinearLayout>
</LinearLayout>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM