是否可以像图片一样从xml创建drawable?第一个矩形包含第二个矩形.
如果是,请向我解释如何.

我需要为所有控件添加波纹效果,以向应用程序添加生动性。由于我的最低API级别为18,所以我无法<ripple>在drawable xml中使用。同样,我所有的控件都有自定义可绘制的XML。
我的自定义控件可绘制
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp"/>
<solid android:color="@color/border1"/>
</shape>
</item>
<item>
<shape>
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp"/>
<corners android:radius="15dp"/>
<solid android:color="@color/border2"/>
</shape>
</item>
<item>
<shape>
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp"/>
<corners android:radius="15dp"/>
<solid android:color="@color/border3"/>
</shape>
</item>
<item>
<shape>
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp"/>
<corners android:radius="15dp"/>
<solid android:color="@color/border4"/>
</shape>
</item>
<item>
<shape>
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp"/>
<corners android:radius="15dp"/>
<solid android:color="@color/border5"/>
</shape>
</item>
<!-- Background -->
<item>
<shape>
<solid android:color="@color/menu_bg"/> …Run Code Online (Sandbox Code Playgroud) 我有一个像下面的xml文件,我将用它来设置背景Textview:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:endColor="#CCCCCC" android:startColor="#CCCCCC"
android:angle="270" />
<stroke android:width="1dp" android:color="#999999" />
<corners android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" android:topLeftRadius="0dp"
android:topRightRadius="0dp" /></shape>
Run Code Online (Sandbox Code Playgroud)
上面的Xml我将在main.xml中设置为TextView的背景,如下所示:
<TextView
android:id="@+id/rowtext3"
android:text="Availablity"
android:layout_height="25px"
android:layout_width="60px"
android:textSize="10px"
android:textStyle="bold"
android:textColor="@color/black"
android:gravity="center"
android:background="@drawable/row"
/>
Run Code Online (Sandbox Code Playgroud)
但我希望这可以从代码而不是Xml.我已经完成了我在Xml中所做的一切,如字体,宽度,高度,字体动态通过代码,但不能设置我在Xml文件中提到的背景.我们如何将Xml文件的内容设置为textview的背景,类似于我们在main.xml中将背景设置为XML的方式.
在代码我这样做:
t1=new TextView(this); <br>
t1.setText(ed1.getText()); <br>
t1.setHeight(25); <br>
t1.setWidth(60); <br>
t1.setTextSize(10); <br>
Run Code Online (Sandbox Code Playgroud)
但我没有找到如何设置背景,即如何将XML内容设置为背景?
任何人都可以帮我解决这个问题吗?
提前致谢,
我有2个按钮,有两种不同的颜色和边框颜色.所以我需要在具有shape属性的drawable文件夹中创建XML,并且:
<stroke
android:width="1dp"
android:color="#C5510E" />
<solid android:color="#F78340" />`
Run Code Online (Sandbox Code Playgroud)
和另一个XML:
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<solid android:color="#000000" />
Run Code Online (Sandbox Code Playgroud)
有没有办法可以在一个XML内部处理drawable文件夹而不是两个XML?
我正在写一个Android应用程序,并遇到了一个非常奇怪的情况.我有一个动画列表xml文件,我为一个名为'loading.xml'的动画加载图形创建,我将其设置为我的代码中ImageView的背景.它是这样的:
public void startLoading() {
if(!isLoading) {
loading.setBackgroundResource(R.drawable.loading);
loading.post(new Runnable() {
public void run() {
anim = (AnimationDrawable) loading.getBackground();
anim.start();
}
});
flMask.setBackgroundResource(R.drawable.mask_loading);
flMask.setVisibility(View.VISIBLE);
flMask.bringToFront();
isLoading = true;
}
}
Run Code Online (Sandbox Code Playgroud)
这非常有效,没有任何问题.但是,如果我将'loading.xml'重命名为'anim_loading.xml'(为了使其与我通常的命名方案保持一致),我会使用
java.lang.ClassCastException: android.graphics.drawable.ColorDrawable
在哪里
anim = (AnimationDrawable)loading.getBackground();
更改名称后,强制关闭,如果我将其更改回'loading.xml',它将再次正常工作.
我真的很难过这个.我尝试使用正确的名称创建一个全新的文件,各种清理/构建,关闭/重新打开Eclipse,关闭/重新打开AVD,擦除AVD并重新安装新的,我已经尝试将xml文件完全重命名为其他内容,并且没有其他相同名称的资源.到目前为止,除了保留名为'loading.xml'的文件之外没有任何工作,至少它可以工作,但它很烦人.我无法找到任何具有相同类型问题的人,这些问题与SO和互联网一样广泛,通常意味着我在某个地方错过了一些愚蠢的事情.
有没有人有任何想法,为什么它不会改变这个文件上的名称?
我正在尝试实现以下UI.我正在使用Eclipse和ADT插件.

以下是圆圈[白色+深灰色](circle_shape.xml)的实现:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape android:shape="ring" android:innerRadius="65dp" android:thickness="10dp"
android:useLevel="false">
<solid android:color="@android:color/white" />
</shape>
</item>
<item android:id="@android:id/progress">
<shape android:shape="ring" android:innerRadius="57dp" android:thickness="8dp" android:useLevel="false">
<solid android:color="#FF393939" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
和进度条[绿色](circle_progress_bar.xml)为:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="270" android:toDegrees="270">
<shape android:innerRadius="65dp" android:shape="ring" android:thickness="10dp">
<gradient android:angle="0" android:endColor="#FF00FF00" android:startColor="#FF00FF00" android:type="sweep" android:useLevel="false" />
</shape>
</rotate>
Run Code Online (Sandbox Code Playgroud)
在布局xml文件中:
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_alignBottom="@+id/repeat"
android:layout_centerHorizontal="true"
android:layout_marginBottom="36dp"
android:background="@drawable/circle_shape"
android:indeterminate="false"
android:max="100"
android:progress="65"
android:progressDrawable="@drawable/circular_progress_bar" />
Run Code Online (Sandbox Code Playgroud)
问题1: 上面的代码为我提供了我想要的精确形状,但仅限于API 19和API 20.只要我将Eclipse中的预览模式切换到API 21,progressDrawable就会填满整个圆圈而只留下单个圆圈充满了绿色.我无法想象如何在Android L上做同样的事情.
问题2: 这与切换按钮有关.在API 21中,我可以轻松设置
<android:textOn="" android:textOff="">
Run Code Online (Sandbox Code Playgroud)
按钮看起来很好.但是,如果我在API19中查看相同内容,则Thumb …
eclipse android xml-drawable android-drawable android-5.0-lollipop
我ImageView在 XML 中定义如下:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/fragment_imageView"
android:src="@drawable/ic_photo"
android:background="@drawable/button_state_list_drawable" />
Run Code Online (Sandbox Code Playgroud)
该button_state_list_drawable.xml是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/button_pressed_state_drawable"
android:state_pressed="true" />
<item android:drawable="@drawable/button_enabled_state_drawable"
android:state_enabled="true" />
</selector>
Run Code Online (Sandbox Code Playgroud)
该button_pressed_state_drawable.xml是:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<size android:width="50dp"
android:height="50dp" />
<padding android:left="25dp"
android:right="25dp"
android:top="25dp"
android:bottom="25dp" />
<stroke android:color="#fff"
android:width="1dp" />
<solid android:color="#1aafd0" />
</shape>
Run Code Online (Sandbox Code Playgroud)
该button_enabled_state_drawable.xml是:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<size android:width="50dp"
android:height="50dp" />
<padding android:left="25dp"
android:right="25dp"
android:top="25dp"
android:bottom="25dp" />
<stroke android:color="#fff" …Run Code Online (Sandbox Code Playgroud) android imageview xml-drawable statelistdrawable android-drawable
我使用以下 xml 代码来绘制可绘制图像:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle" >
<corners
android:topLeftRadius="30dp"
android:topRightRadius="30dp"
android:bottomLeftRadius="30dp"
android:bottomRightRadius="30dp" />
<solid
android:color="@color/black" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
<size
android:width="60dp"
android:height="60dp" />
</shape>
</item>
<item>
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="50%"
android:pivotY="50%">
<shape
android:shape="line">
<stroke
android:width="2dp"
android:color="@color/white" />
</shape>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
现在我必须减少圆中心白线的长度。我已经使用了<size android:height="40dp" />和<size android:width="40dp" />就行了,但它没有任何作用。那么,如何减少线路长度呢?