标签: android-layout

是否可以使用android:DrawableRight在Buttons和TextViews中使用VectorDrawable?

当我在textview或imageview中使用VectorDrawable资源时,使用"android:DrawableRight"/"android:DrawableEnd"/"android:DrawableStart"/"android:DrawableLeft"时会出现运行时崩溃.

该应用程序将编译正常,没有任何警告.

我在用

  • Gradle 1.5
  • 支持库23.2('com.android.support:appcompat-v7:23.2.0')

我发现的是,我可以通过编程方式在Java中分配SVG,而不会像这样崩溃.

TextView tv = (TextView) findViewById(R.id.textView);
tv.setCompoundDrawablesWithIntrinsicBounds(null,null, getResources().getDrawable(R.drawable.ic_accessible_white_36px),null);
Run Code Online (Sandbox Code Playgroud)

(我怀疑这是23.2的支持库错误.)

但是可以将drawableRight等用于SVG资产吗?

这是我的布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="au.com.angryitguy.testsvg.MainActivity">


<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableRight="@drawable/ic_accessible_white_36px"
    android:background="@color/colorPrimary"
    android:textColor="#FFFFFF"
    android:textSize="22sp"
    android:text="Hello World!"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是我的活动

package au.com.angryitguy.testsvg;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        }
    }
Run Code Online (Sandbox Code Playgroud)

以下是Google材料设计网站中未经修改的VectorDrawable资产.

<vector android:height="24dp" android:viewportHeight="24.0"
    android:viewportWidth="24.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#FFFFFF" android:pathData="M12,4m-2,0a2,2 …
Run Code Online (Sandbox Code Playgroud)

java android android-layout compound-drawables android-vectordrawable

117
推荐指数
10
解决办法
5万
查看次数

EditText maxLines不起作用 - 用户仍然可以输入比set更多的行

<EditText 
    android:id="@+id/editText2" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:maxLines="5" 
    android:lines="5">
</EditText>
Run Code Online (Sandbox Code Playgroud)

用户可以按Enter/next行键输入5行以上.如何使用EditText将用户输入限制为固定的行数?

android android-layout android-edittext

116
推荐指数
12
解决办法
8万
查看次数

如何让RelativeLayout使用merge和include?

我一直在尝试了几天,现在让我的布局更有效率使用的几个层次转换嵌套LinearLayouts一个RelativeLayout和所遇到的一些问题,我的天堂没有能够找到一个解决方法...

我搜索了Android初学者小组和这个网站,但却找不到任何可以帮我解决问题的方法.

我在其中一个博客上看到,您可以将布局与合并和包含标签结合起来.所以我拥有一个带有RelativeLayout根元素的主布局文件.在其中我有5个包含标签,它们引用了5个不同的xml布局文件,每个文件都有一个根的合并元素(我的所有合并文件都是相同的,除了它们中的ID).

我遇到了两个问题,我将在发布布局代码的简化版后解释:

示例主布局文件:

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

    <include 
        android:id="@+id/running_gallery_layout_id"
        layout="@layout/running_gallery_layout" />

    <include 
        android:id="@+id/recent_gallery_layout_id" 
        layout="@layout/recent_gallery_layout"
        android:layout_below="@id/running_gallery_layout_id" />

    <include
        android:id="@+id/service_gallery_layout_id"
        layout="@layout/service_gallery_layout"
        android:layout_below="@id/recent_gallery_layout_id" />

    <include
        android:id="@+id/process_gallery_layout_id"
        layout="@layout/process_gallery_layout"
        android:layout_below="@id/service_gallery_layout_id" />

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

示例包括合并文件:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView 
        style="@style/TitleText"
        android:id="@+id/service_gallery_title_text_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="@string/service_title" />

    <Gallery
        android:id="@+id/service_gallery_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_below="@id/service_gallery_title_text_id" />

    <TextView 
        style="@style/SubTitleText"
        android:id="@+id/service_gallery_current_text_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/service_gallery_title_text_id"
        android:layout_above="@id/service_gallery_id" />
</merge>
Run Code Online (Sandbox Code Playgroud)

我遇到两个问题:

1)android:layout_*在include标记中使用时,似乎忽略了属性,并且所有合并的布局都显示在彼此之上.根据这篇文章(http://developer.android.com/resources/articles/layout-tricks-reuse.html)"任何android:layout_*属性都可以与<include /> …

merge android include android-layout android-relativelayout

114
推荐指数
3
解决办法
5万
查看次数

找不到以下类:android.support.v7.internal.app.WindowDecorActionBar

是什么原因导致Android Studio布局预览中出现以下错误?

呈现问题无法找到以下类: - android.support.v7.internal.app.WindowDecorActionBar(修复构建路径,创建类)提示:尝试构建项目.

android android-layout android-studio

114
推荐指数
5
解决办法
7万
查看次数

SystemSystemWindows究竟做了什么?

我正在努力理解这个概念,fitsSystemWindows因为它取决于它做不同的事情.根据官方文件,它是一个

布尔内部属性,用于根据系统窗口(如状态栏)调整视图布局.如果为true,则调整此视图的填充以为系统窗口留出空间.

现在,检查View.java类我可以看到,当设置true为时,窗口插入(状态栏,导航栏...)将应用于视图填充,这根据上面引用的文档工作.这是代码的相关部分:

private boolean fitSystemWindowsInt(Rect insets) {
    if ((mViewFlags & FITS_SYSTEM_WINDOWS) == FITS_SYSTEM_WINDOWS) {
        mUserPaddingStart = UNDEFINED_PADDING;
        mUserPaddingEnd = UNDEFINED_PADDING;
        Rect localInsets = sThreadLocal.get();
        if (localInsets == null) {
            localInsets = new Rect();
            sThreadLocal.set(localInsets);
        }
        boolean res = computeFitSystemWindows(insets, localInsets);
        mUserPaddingLeftInitial = localInsets.left;
        mUserPaddingRightInitial = localInsets.right;
        internalSetPadding(localInsets.left, localInsets.top,
                localInsets.right, localInsets.bottom);
        return res;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

随着新材料设计的出现,有一些新的类广泛使用这个标志,这就是混乱的来源.在许多来源中fitsSystemWindows被提到作为设置在系统栏后面放置视图的标志.看到这里.

在文档ViewCompat.javasetFitsSystemWindows说:

设置此视图是否应考虑系统屏幕装饰,例如状态栏和插入其内容; 也就是说,控制是否执行{@link View#fitSystemWindows(Rect)}的默认实现.有关详细信息,请参阅该方法.

据此, …

android android-layout

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

如何将宽度设置为"填充父级"的android按钮中的图标和文本居中

我想要一个带有图标+文本的Android按钮.我正在使用drawableLeft属性来设置图像,如果按钮的宽度为宽,"wrap_content"但是我需要拉伸到最大宽度,所以我使用宽度"fill_parent".这会将我的图标直接移动到按钮的左侧,我希望图标和文本都在按钮内居中.

我尝试设置填充但这只允许给出一个固定值,所以它不是我需要的.我需要在中心对齐图标+文字.

<Button 
    android:id="@+id/startTelemoteButton" 
    android:text="@string/start_telemote"
    android:drawableLeft="@drawable/start"
    android:paddingLeft="20dip"
    android:paddingRight="20dip"            
    android:width="fill_parent"
    android:heigh="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

有关如何实现这一目标的任何建议?

user-interface android button alignment android-layout

112
推荐指数
10
解决办法
13万
查看次数

Android:无法将@ drawable/picture转换为drawable

在我的drawable文件夹中,我有一些图像,它们都引用完美,但是当我尝试在同一文件夹中添加具有完全相同大小的任何更多图像,并尝试引用它时,标记错误"无法转换@ drawable/picture into a drawable".我尝试使用不同名称的相同图像,它只是一直给我错误.我也尝试过不同的XML布局和相同的东西.此外,图片的名称一直是"jack","abc","question_mark",你可以看到严格按照你可以使用的字符的规则,仍然会出现错误信息.对于如何解决问题,任何建议都会很棒,谢谢.

无法将@ drawable/picture转换为drawable

android image reference drawable android-layout

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

如何在布局xml文件中使用时指定id

在我的布局xml文件中,我已经包含了其他布局xml文件(每个文件都有不同的android id).

<include layout="@layout/view_contact_name" android:id="+id/test1"/>
<include layout="@layout/view_contact_name" android:id="+id/test2"/>
Run Code Online (Sandbox Code Playgroud)

但是,当我在模拟器中运行它,并开始层次查看器,每个布局仍显示"NO_ID",并在我的代码,我 findViewById(R.id.test1)findViewById(R.id.test2)两个返回null.

有人可以帮我解决我的问题吗?

android android-layout

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

如何在不在xml中的代码中设置RelativeLayout布局参数?

例如,我想在屏幕上添加3个按钮:一个对齐左边,一个对齐中心,最后一个对齐右边.

如何在代码中设置其布局,而不是xml

android android-layout android-relativelayout

111
推荐指数
3
解决办法
14万
查看次数

如何将Corner Radius应用于LinearLayout

我想制作一个带圆角边框的布局.如何应用特定大小的半径LinearLayout

android android-layout

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