相关疑难解决方法(0)

如何在android中创建自定义对话框?

我想创建一个自定义对话框,如下所示

在此输入图像描述

我尝试过以下的事情.

  1. 我创建了AlertDialog.Builder的子类,并使用了自定义标题和自定义内容视图并使用了它,但结果并不像预期的那样.

  2. 另一种尝试是继承DialogFragment并在onCreateDialog中自定义对话框,但结果不是预期的.

  3. 然后我尝试使用普通的Dialog类.结果并不像预期的那样.

在所有三种情况下,问题是当我忽略标题视图时,对话框的大小不是预期的,当我使用标题视图时,结果是内容视图周围有一个粗边框(实际上看起来很糟糕).现在我脑子里有两个问题......

  1. 我怎样才能做到这一点?由于我已经尝试了很多东西,因此我们将更加赞赏直接的答案.

  2. 在Android应用程序中显示错误或警告对话框的最佳方法是什么?

编辑 Android开发人员文档建议我们应该使用DialogFragments或Dialogs向用户显示错误/警报消息.但有一次他们说......

提示:如果需要自定义对话框,则可以将"活动"显示为对话框,而不是使用"对话框API".只需创建一个活动,并将其主题设置为清单元素中的Theme.Holo.Dialog.

那是什么意思?使用Activity只是为了显示错误消息是不是太多了?

android android-dialog android-dialogfragment

333
推荐指数
10
解决办法
56万
查看次数

BottomSheetDialogFragment的圆角

我有一个自定义的BttomSheetDialogFragment,我希望在底部视图的顶部有圆角

这是我的自定义类,它让我希望从底部显示我的布局

View mView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.charge_layout, container, false);
    initChargeLayoutViews();
    return mView;
}
Run Code Online (Sandbox Code Playgroud)

我也有这个xml资源文件作为背景:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:topRightRadius="35dp"
    android:topLeftRadius="35dp"
    />
<solid android:color="@color/white"/>

<padding android:top="10dp"
    android:bottom="10dp"
    android:right="16dp"
    android:left="16dp"/>
Run Code Online (Sandbox Code Playgroud)

但问题是,当我将此资源文件设置为我的Layout的根元素的背景时,角落仍然没有舍入

我不能使用下面的代码:

    this.getDialog().getWindow().setBackgroundDrawableResource(R.drawable.charge_layout_background);
Run Code Online (Sandbox Code Playgroud)

因为它覆盖BottomSheetDialog的默认背景,并且在我的底视图上方不会有任何半透明的灰色

android material-design bottom-sheet material-components material-components-android

48
推荐指数
13
解决办法
2万
查看次数

自定义FragmentDialog具有圆角而不是100%的屏幕宽度

我正在创建一个自定义片段对话框,其圆角和布局不会填满屏幕宽度(我更喜欢它只是包装其内容).

这是我rounded_dialog.xml的drawable文件夹,由我的Custom调用,ThemeWithCorners作为对话框的背景.我还尝试将其设置为线性布局的背景,该布局创建其内容但没有任何作用.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" 
>
<solid android:color="@android:color/white"/>
<corners android:radius="20dp"
/>
</shape>
Run Code Online (Sandbox Code Playgroud)

这就是我调用对话框的方式:

final String FTAG = "TAG_FRAGMENT_DIALOG_CALENDAR";
    dialog = (CalendarDialog) fm.findFragmentByTag(FTAG);
    ft = fm.beginTransaction();
    if (dialog != null)
    {
        ft.remove(dialog);
    }
    dialog = CalendarDialog.newInstance(this);      
    dialog.setCancelable(true);

    ft.add(dialog, FTAG);
    ft.show(dialog);
    ft.commit();
Run Code Online (Sandbox Code Playgroud)

在对话框的onCreate方法中我设置了样式和主题:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(DialogFragment.STYLE_NO_TITLE, R.style.ThemeWithCorners);      
}
Run Code Online (Sandbox Code Playgroud)

这是onCreateView方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
getDialog().setCanceledOnTouchOutside(true);
v = (MyCalendar)inflater.inflate(R.layout.calendar_dialog, container, true)
    return v;
}
Run Code Online (Sandbox Code Playgroud)

我也尝试将此添加到onCreateDialog方法,因为SO上的其他答案建议但不起作用:

@Override
public Dialog onCreateDialog(Bundle …
Run Code Online (Sandbox Code Playgroud)

android custom-component android-dialogfragment

33
推荐指数
3
解决办法
2万
查看次数

带有圆角的Android AlertDialog

我一直试图用圆角制作我的警报对话但不知何故我无法做到.我试过,但我失败了.我试着关注这个博客http://blog.stylingandroid.com/archives/271并根据它制作了我的风格.

顺便说一句,现在就加我的问题.我的一些新发现.上面链接中的代码在2.3.3(GB)上工作正常但在ICS中根本不起作用.一些改变使代码破裂.

我想避免创建9个补丁图像,因此我使用的是形状.9补丁图像是我将尝试的最后一件事.我知道android警报对话框样式正在使用9补丁图像.在抛出这个问题之前我已经看过了.

/res/values/themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="MyTheme" parent="@android:style/Theme.Dialog">
        <item name="android:alertDialogStyle">@style/dialog</item>
    </style>


</resources>
Run Code Online (Sandbox Code Playgroud)

/res/values/styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="AppTheme" parent="android:Theme.Light" />

    <style name="myImageView">

        <!-- 3dp so the background border to be visible -->
        <item name="android:padding">3dp</item>
        <item name="android:background">@drawable/image_drawable</item>
        <item name="android:scaleType">fitCenter</item>
    </style>

    <style name="dialog">
        <item name="android:fullDark">@drawable/dialog_body</item>
        <item name="android:topDark">@drawable/dialog_title</item>
        <item name="android:centerDark">@drawable/dialog_body</item>
        <item name="android:bottomDark">@drawable/dialog_footer</item>
        <item name="android:fullBright">@drawable/dialog_body</item>
        <item name="android:centerBright">@drawable/dialog_body</item>
        <item name="android:topBright">@drawable/dialog_title</item>
        <item name="android:bottomBright">@drawable/dialog_footer</item>
        <item name="android:bottomMedium">@drawable/dialog_footer</item>
        <item name="android:centerMedium">@drawable/dialog_body</item>
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

/res/drawable/dialog_title.xml

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="-1dp">
    <shape android:shape="rectangle">
        <solid android:color="#FFFFFF" />
        <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" /> …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-alertdialog android-styles

30
推荐指数
5
解决办法
4万
查看次数

不支持Path.isConvex.Android Studio - 切换按钮

我已经在stackoverflow上读到了这个问题但很遗憾没有找到正确的答案.

我使用ToggleButton,它在渲染窗口中显示以下错误:

The graphics preview in the layout editor may not be accurate: 
- Different corner sizes are not supported in Path.addRoundRect. (Ignore for this session) 
- Path.isConvex is not supported. (Ignore for this session)
Run Code Online (Sandbox Code Playgroud)

终端显示以下错误消息:

E/dalvikvm: Could not find class 'android.widget.ThemedSpinnerAdapter', referenced from method android.support.v7.widget.AppCompatSpinner$DropDownAdapter.<init>
Run Code Online (Sandbox Code Playgroud)

当我在渲染窗口中将api级别设置为19而不是23时,将不会出现"渲染问题"窗口,但在使用Android 4.4.2的设备上运行时,应用程序中仍会出现错误.

这是我简单的ToggleButton:

<ToggleButton
                android:id="@+id/editToggleKunde6"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textOn="@string/kunde_bearbeiten_txt1"
                android:textOff="@string/kunde_bearbeiten_txt2"
                android:checked="true"
                />
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何想法!

java android android-layout android-studio

9
推荐指数
2
解决办法
1万
查看次数

在android中带圆角的对话框

我已经解决了一些问题,但没有解决我的问题.

我创建了一个自定义DialogFragment.和根元素dialog is cardView.我设置cardCornerRadiuscardView.

然后我尝试设置透明对话框,因为背景颜色也随之显示.

然后我尝试设置对话框主题

<style name="PauseDialog" parent="@style/Theme.AppCompat.Light.Dialog">
       <!-- TTheme.AppCompat.Translucent-->
        <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item>
        <!--<item name="android:windowBackground">@android:color/transparent</item>-->
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@android:color/transparent</item>


        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:background">@android:color/transparent</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

背景仍然存在.然后我也试过了

dialog.getWindow().setBackgroundDrawable(
                new ColorDrawable(Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)

但仍然对话框有与之相关的背景.

有什么工作吗?我怎么能摆脱它.

我创建了一个DialogFragmentonCreateDialog

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),
                R.style.PauseDialog);
        setStyle(DialogFragment.STYLE_NO_FRAME, R.style.PauseDialog);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

android android-theme android-dialogfragment

6
推荐指数
1
解决办法
1万
查看次数

向 Android 布局添加圆角会留下白边

我正在尝试创建一个Layout带有圆角的圆角,我曾经shape帮助我这样做,但是当添加圆角时,背景白色也会保持不变。

同样重要的是要注意,我将它layout.xml用作 ContentView 用于Dialog

final Dialog MyDialog = new Dialog(this);
MyDialog.setContentView(R.layout.layout.xml);
Run Code Online (Sandbox Code Playgroud)

这是我的layout.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:background="@drawable/round_corners"
    android:layout_height="200dp">

    <Button
        android:id="@+id/play_song"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginEnd="32dp"
        android:text="Play"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <Button
        android:id="@+id/delete_song"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginStart="28dp"
        android:text="Delete"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

和可绘制的round_corners.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/gray_text"/>
    <stroke android:width="3dp" android:color="@color/colorBlack" />
    <corners android:radius="20dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这是我得到的结果:

在此处输入图片说明

如何去除白色边角?

java xml android constraints shape

6
推荐指数
1
解决办法
1840
查看次数

在具有透明背景的片段上呈现片段

我正在使用喷气背包导航从片段过渡到细节片段。

我需要帮助在显示它的片段呈现细节片段。

请参阅下面的照片以了解我想要实现的目标:

埃菲尔铁塔

我还在导航图中的动画上使用基本的淡入/淡出作为输入退出。

这是我得到的结果:

呈现视图的结果未显示在详细视图中

如何设置过渡以便细节片段显示在呈现视图上?

这是我所有的进展:

底部导航菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
            android:id="@+id/fragment_tab1"
            android:title="Tab 1"/>

    <item
            android:id="@+id/fragment_tab2"
            android:title="Tab 2"/>

    <item
            android:id="@+id/fragment_tab3"
            android:title="Tab 3"/>

</menu>
Run Code Online (Sandbox Code Playgroud)

导航图

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph"
            app:startDestination="@id/fragment_tab1">
    <fragment android:id="@+id/fragment_tab1" android:name="com.example.navgraphfragmentmodal.Tab1" android:label="fragment_tab1"
              tools:layout="@layout/fragment_tab1">
        <action android:id="@+id/toModal" app:destination="@id/modalFragment"/>
    </fragment>
    <fragment android:id="@+id/fragment_tab2" android:name="com.example.navgraphfragmentmodal.Tab2" android:label="fragment_tab2"
              tools:layout="@layout/fragment_tab2"/>
    <fragment android:id="@+id/fragment_tab3" android:name="com.example.navgraphfragmentmodal.Tab3"
              android:label="fragment_tab3" tools:layout="@layout/fragment_tab3"/>
    <fragment android:id="@+id/modalFragment" android:name="com.example.navgraphfragmentmodal.ModalFragment"
              android:label="fragment_modal" tools:layout="@layout/fragment_modal"/>
</navigation>
Run Code Online (Sandbox Code Playgroud)

主活动.kt

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val navHostFragment = supportFragmentManager.findFragmentById(R.id.navigation_host_fragment) as NavHostFragment?
        NavigationUI.setupWithNavController(bottom_navigation_view, navHostFragment!!.navController)

        supportActionBar?.setDisplayShowHomeEnabled(true)
    } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-navigation android-transitions android-jetpack

2
推荐指数
1
解决办法
1924
查看次数

0
推荐指数
3
解决办法
5361
查看次数