标签: android-layout

在Android中使用负边距是不好的做法?

负余量演示:

                         在此输入图像描述

场景

通过为其中一个设置负边距来重叠视图,以便它侵入另一个视图的边界框.

思考

它似乎按照你期望的方式工作,如果他们应该重叠布局.但是我不想在不知不觉中做不好的事情遇到更大的问题.模拟器,物理设备,你命名它,当你使用负边距时,一切似乎都正常工作,一个视图侵入另一个视图边界框,并取决于它在布局中声明的方式,它将在另一个视图的上方或下方.

我也知道,自API 21以来我们可以设置translationZelevation 属性使视图显示在其他视图的上方或下方,但我的关注基本上来自这样一个事实,即layout_margin属性的文档中明确指出边缘值应为正,让我引述:

摘录:
指定此视图左侧,顶部,右侧和底部的额外空间.这个空间超出了这个视野的范围.保证金价值应为正数.必须是维值,这是一个附加单位的浮点数,例如"14.5sp".可用的单位是:像素(像素),DP(密度无关的像素),SP(基于优选的字体大小缩放的像素),in(英寸),(毫米)...

在未来的几年,因为最初提出这个问题,我还没有切缘阴性的任何问题,并尽量避免使用它们尽可能多地,但并没有遇到任何问题,所以即使文档指出,我不是太担心它.

user-interface android margins overlap android-layout

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

Android设计库 - 浮动操作按钮填充/保证金问题

我正在使用Google Design Library中新的FloatingActionButton,我遇到了一些奇怪的填充/边距问题.此图像(启用了开发人员布局选项)来自API 22.

在此输入图像描述

从API 17开始.

在此输入图像描述

这是XML

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_gravity="bottom|right"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="-32dp"
        android:src="@drawable/ic_action_add"
        app:fabSize="normal"
        app:elevation="4dp"
        app:borderWidth="0dp"
        android:layout_below="@+id/header"/>
Run Code Online (Sandbox Code Playgroud)

为什么API 17中的FAB如此大得多?

xml android android-layout floating-action-button android-design-library

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

如何设置工具栏文本和后退箭头颜色

工具栏背景为深色,我希望文本和后退箭头为白色.我试过跟随,但它不起作用.

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="colorPrimary">@color/blue</item>
        <item name="colorPrimaryDark">@color/blue_darker</item>
        <item name="colorAccent">@color/purple</item>
        <!-- item name="android:textColorPrimary">@color/white</item--> // I don't want to set this, changes everywhere. 
        <item name="android:textColorSecondary">@color/white</item>
        <item name="android:toolbarStyle">@style/AppTheme.ToolbarStyle</item>
        <item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item>

        <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item>

    </style>

    <style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar">
        <!--<item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>-->
        <item name="android:textColor">@color/white</item> // doesn't work
        <item name="titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
        <item name="android:titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item>
        <item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

android toolbar android-layout android-theme android-styles

107
推荐指数
9
解决办法
15万
查看次数

使用按钮背景颜色为我的按钮添加涟漪效果?

我创建了一个按钮,我想为该按钮添加涟漪效果!

我创建了一个按钮bg XML文件:(bg_btn.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#FFFFFF" android:endColor="#00FF00" android:angle="270" />
<corners android:radius="3dp" />
<stroke android:width="5px" android:color="#000000" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这是我的涟漪效应文件:(ripple_bg.xml)

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:color="#f816a463"
    tools:targetApi="lollipop">
    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="#f816a463" />
        </shape>
    </item>
</ripple>
Run Code Online (Sandbox Code Playgroud)

这是我想要添加涟漪效果的按钮:

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginTop="173dp"
android:textColor="#fff"
android:background="@drawable/ripple_bg"
android:clickable="true" />
Run Code Online (Sandbox Code Playgroud)

但添加涟漪效果后按钮背景是透明的,只有在点击时才会显示按钮,如下所示:

点击之前

点击

但我需要按钮背景颜色和涟漪效果,我在Stack Overflow的不同博客中发现了一些此代码,但它仍然无效!

android android-layout android-drawable rippledrawable

107
推荐指数
10
解决办法
11万
查看次数

ConstraintLayout内的Wrap_content视图在屏幕外伸展

我正在尝试使用一个简单的聊天气泡ConstraintLayout.这就是我想要实现的目标:

在此输入图像描述 在此输入图像描述

但是,wrap_content似乎没有与约束一起正常工作.它尊重边距,但不能正确计算可用空间.这是我的布局:

<?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="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/chat_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintHorizontal_bias="0"
        tools:background="@drawable/chat_message_bubble"
        tools:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sodales accumsan tortor at bibendum."
        android:layout_marginStart="64dp"
        android:layout_marginLeft="64dp"
        android:layout_marginEnd="32dp"
        android:layout_marginRight="32dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

这呈现如下:

在此输入图像描述

我在用com.android.support.constraint:constraint-layout:1.0.0-beta4.

难道我做错了什么?这是一个错误还是一个不直观的行为?ConstraintLayout我可以使用(我知道我可以使用其他布局,我ConstrainLayout具体询问)来实现正确的行为.

android android-layout android-constraintlayout

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

在屏幕的任何位置显示AlertDialog

当我们在android中显示AlertDialog时,它显示在屏幕的中心.有没有办法改变立场?

android android-ui android-layout

105
推荐指数
3
解决办法
8万
查看次数

Android - 在LinearLayout中水平居中TextView

我有以下基本布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bar_background">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:padding="10dp"
        android:text="HELLO WORLD" />

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

似乎xml是正确的,但文本是左对齐的.textview占用父级的整个宽度,textview设置为居中.不确定是什么问题...

android android-layout android-linearlayout layout-gravity

105
推荐指数
4
解决办法
15万
查看次数

我何时以及为什么要在Android应用程序中使用片段?

我经常需要我的应用程序的不同部分有自己的特殊行为和UI,我不知道片段可以如何帮助.在大多数情况下,我认为创建2个不同的活动(例如,1个用于平板电脑,1个用于手机)以及分享第三类中的常见行为和事件更快.

所以,记住这一点,我为什么要使用片段?

android android-layout

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

如何防止滚动视图在加载数据后滚动到webview?

所以我有一个引人入胜的问题.尽管我不是手动或以编程方式滚动我的视图,但我的WebView会在其内部数据加载后自动滚动到.

我在viewpager中有一个片段.当我第一次加载寻呼机时,它按预期工作,并显示所有内容.但是一旦我"翻页",数据就会加载,WebView会弹出到页面顶部,将视图隐藏在它上面,这是不可取的.

有谁知道如何防止这种情况发生?

我的布局看起来像这样:

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/article_title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="2dp"
            android:text="Some Title"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@color/article_title"
            android:textStyle="bold" />

        <LinearLayout
            android:id="@+id/LL_Seperator"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:background="@color/text"
            android:orientation="horizontal" >
        </LinearLayout>

        <WebView
            android:id="@+id/article_content"
            android:layout_width="match_parent"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/article_link"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:text="View Full Article"
            android:textColor="@color/article_title"
            android:textStyle="bold" />
    </LinearLayout>

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

我也没注重任何事情.默认情况下,它似乎在加载后自动滚动到WebView.我该如何防止这种情况?

android android-layout android-webview android-scrollview android-viewpager

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

如何以编程方式圆角和设置随机背景颜色

我想围绕视图的角落,并在运行时根据内容更改视图的颜色.

TextView v = new TextView(context);
v.setText(tagsList.get(i));
if(i%2 == 0){
    v.setBackgroundColor(Color.RED);
}else{
    v.setBackgroundColor(Color.BLUE);
}

v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
v.setPadding(twoDP, twoDP, twoDP, twoDP);               
v.setBackgroundResource(R.drawable.tags_rounded_corners);
Run Code Online (Sandbox Code Playgroud)

我希望设置一个drawable,颜色会重叠,但他们没有.无论我执行第二个是生成的背景.

有没有办法以编程方式创建此视图,请记住,直到运行时才会确定背景颜色?

编辑:我现在只在红色和蓝色之间进行测试.之后,用户可以选择颜色.

编辑:

tags_rounded_corners.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners 
         android:bottomRightRadius="2dp" 
         android:bottomLeftRadius="2dp" 
         android:topLeftRadius="2dp" 
         android:topRightRadius="2dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

android background rounded-corners android-layout android-view

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