【问题标题】:Strange behavior of android theme Theme.AppCompat.Light.NoActionBar in Lollipop+ devicesLollipop+ 设备中 Android 主题 Theme.AppCompat.Light.NoActionBar 的奇怪行为
【发布时间】:2016-05-12 06:44:27
【问题描述】:

我在为我的 Activity 设置 主题 时遇到问题。一切都在 Pre-Lollipop 设备中完美运行。

我想实现这样的布局设计:

图片:1

我已经通过这个 xml 做到了:

design.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/spec_back"
android:orientation="vertical"
android:weightSum="1">

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@color/spec_back"
    android:scrollbars="none">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="10dp"
            android:orientation="horizontal"
            android:weightSum="3">

            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="3"
                android:background="@color/transparent"
                android:orientation="vertical">

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="30dp"
                    android:layout_margin="1dp"
                    android:background="@color/transparent"
                    android:orientation="horizontal"
                    android:weightSum="6">

                    <Button
                        android:id="@+id/btn_cut"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/blue_spec"
                        android:clickable="false"

                        android:gravity="left|center"
                        android:paddingLeft="3dp"
                        android:text="@string/CUT"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_cut_ex"
                        style="@android:style/ButtonBar"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/EX"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_cut_vg"
                        style="@android:style/ButtonBar"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/VG"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_cut_g"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/G"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_cut_f"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/G"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_tex"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_weight="1"
                        android:background="@drawable/square_trans"
                        android:text="@string/tex"
                        android:textColor="@color/blue_spec"
                        android:textSize="@dimen/font_12" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="30dp"
                    android:layout_marginBottom="1dp"
                    android:layout_marginLeft="1dp"
                    android:layout_marginRight="1dp"
                    android:orientation="horizontal"
                    android:weightSum="6">

                    <Button
                        android:id="@+id/btn_pol"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/blue_spec"
                        android:clickable="false"
                        android:gravity="left|center"
                        android:paddingLeft="3dp"
                        android:text="@string/POL"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_pol_ex"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/EX"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_pol_vg"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/VG"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_pol_g"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/G"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_pol_f"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/G"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_tvg"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_weight="1"
                        android:background="@drawable/square_trans"
                        android:text="@string/tvg"
                        android:textColor="@color/blue_spec"
                        android:textSize="@dimen/font_12" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="30dp"
                    android:layout_marginBottom="1dp"
                    android:layout_marginLeft="1dp"
                    android:layout_marginRight="1dp"
                    android:orientation="horizontal"
                    android:weightSum="6">

                    <Button
                        android:id="@+id/btn_sym"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/blue_spec"
                        android:clickable="false"
                        android:gravity="left|center"
                        android:paddingLeft="3dp"
                        android:text="@string/SYM"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_sym_ex"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/EX"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_sym_vg"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/VG"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_sym_g"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/G"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_sym_f"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginRight="1dp"
                        android:layout_weight="1"
                        android:background="@color/gray_spec"
                        android:text="@string/F"
                        android:textColor="@color/white"
                        android:textSize="@dimen/font_12" />

                    <Button
                        android:id="@+id/btn_nobgm"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_weight="1"
                        android:background="@drawable/square_trans"
                        android:text="@string/nobgm"
                        android:textColor="@color/blue_spec"
                        android:textSize="@dimen/font_12" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="20dp"
            android:orientation="vertical">
        </LinearLayout>
    </LinearLayout>
</ScrollView>

</LinearLayout>

我已经为我的按钮指定了1dp 的边距,以查看它们彼此分开。这种布局非常适用于棒棒糖之前的设备。但是对于 Lollipop,尽管有边距,但它还是被合并了。我看不到左右边距,可以看到上下边距。这个问题可以通过下面的棒棒糖设备图片来解释:

图片:2

我正在应用主题:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:colorAccent">@color/colorPrimary</item>
    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:actionModeBackground">@color/colorPrimary</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:textColor">@color/myTextPrimaryColor</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    <item name="android:typeface">serif</item>
</style>

请帮忙。我在这里呆了 4 天。

【问题讨论】:

  • @downvoter 你应该评论下投票的原因。
  • 你的意思是这个Theme 不能只在5.0 之上工作?
  • 是的.. 可行.. 但边距不存在.. 如 image2 所示。
  • 为什么不使用Table Layout 这个Design。我认为有了这些东西会好得多。或者在每个Linear Layout 旁边使用View
  • 作为替代方案,您的建议很好.. 但目前我有 3000 多行的这些类型的 xml 实现。所以首先我想找到这段代码的问题,然后去找你的解决方案。顺便说一句..!!

标签: android android-layout android-5.0-lollipop android-theme


【解决方案1】:

添加

style="?android:attr/borderlessButtonStyle"

到布局中的按钮

祝你好运,'。

【讨论】:

  • 我正在使用的颜色。 spec_back:#E6E7E8,gray_spec:#C7C7C7。这些颜色的边距严重不可见。我刚刚在代码中定义了 Id,xml 就在你身边。
  • 你的问题然后是阴影......这段代码将删除阴影:Add style="?android:attr/borderlessButtonStyle" to Button in layout.. 这样可以解决你的问题。
【解决方案2】:

使用下面的 sn-p 删除布局中的阴影 按钮属性

添加了这个Property style="?android:attr/borderlessButtonStyle

<Button
  android:id="@+id/btn_cut"
  android:layout_width="0dp"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:layout_marginRight="1dp"
  android:layout_weight="1"
  style="?android:attr/borderlessButtonStyle"
  android:background="@color/blue_spec"
  android:clickable="false"
  android:gravity="left|center"
  android:paddingLeft="3dp"
  android:text="@string/CUT"
  android:textColor="@color/white"
  android:textSize="@dimen/font_12" />

注意:另外,为了获得更好的效果,您可以使用 Table Layout 代替此 Stuff Design。这将产生更好的结果,而不是 Linear Layout

【讨论】:

  • thnx 但我不能接受,因为Maher Abuthraa's 评论解决了我的问题。
  • @jankigadhiya 您可以接受 np 的最佳答案之一。顺便说一句,谢谢。
猜你喜欢
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多