我有一个xml,在这个xml我加Horizontal Line之间TextViews。我Shape在分隔符中添加了一个,但看不到更改。
main_activity.xml :
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="20dp"
android:text="HELLO"
android:textColor="@android:color/black" />
<View
android:id="@+id/vVerticalLine"
android:background="@drawable/horizontal_shape"
android:layout_width="match_parent"
android:layout_marginLeft="50dp"
android:layout_marginRight="20dp"
android:layout_below="@+id/title"
android:layout_height="10dp" />
<TextView
android:id="@+id/txt"
android:layout_width="match_parent"
android:layout_height="20dp"
android:text="HELLO"
android:textColor="@android:color/black" />
Run Code Online (Sandbox Code Playgroud)
和我的horizontal_shape.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
<stroke
android:color="#000000" />
</shape>
Run Code Online (Sandbox Code Playgroud)
例如我需要:

我想使用制作虚线shape。
这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="line">
<stroke android:color="@color/grey_divider"
android:width="1dip"
android:dashWidth="5dip"
android:dashGap="13dip"/>
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
如何解决?
我尝试使用下面的代码创建一个弹出窗口,顶部有一个类似工具提示的箭头。附图片。但结果我得到了不同的东西。
弹出式充气机:
LayoutInflater inflater = (LayoutInflater)
getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.popup, null);
mypopupWindow = new PopupWindow(view,500, RelativeLayout.LayoutParams.WRAP_CONTENT, true);
mypopupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
mypopupWindow.showAsDropDown(v,-153,0);
Run Code Online (Sandbox Code Playgroud)
弹出布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="50dp"
android:layout_marginTop="50dp"
android:background="@drawable/shadow_recta"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="text long text" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
可绘制文件:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:gravity="top|center_horizontal" >
<rotate android:fromDegrees="0" android:toDegrees="-45"
android:pivotX="0%" android:pivotY="50%" >
<shape android:shape="rectangle">
<size android:width="24dp" android:height="24dp" />
<stroke android:color="@android:color/holo_blue_bright" android:width="1dp"/>
</shape>
</rotate>
</item>
<item>
<shape android:shape="rectangle"> …Run Code Online (Sandbox Code Playgroud) 我想在按下事件时更改 ImageButton 的背景颜色。
这是我所做的:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/rose_normal" />
<solid
android:state_pressed="true"
android:color="@color/rose_fonce" />
<stroke
android:width="1sp"
android:color="@color/rose_fonce" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我的按钮很好地采用“rose_normal”颜色,但在按下时从来没有采用“rose_fonce”颜色。
哪里有问题 ?
编辑:问题已解决:
创建一个名为 background_rounded_button.xml 的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rounded_button_rose_fonce" android:state_selected="true"></item>
<item android:drawable="@drawable/rounded_button_rose_fonce" android:state_pressed="true"></item>
<item android:drawable="@drawable/rounded_button_rose_normal"></item>
</selector>
Run Code Online (Sandbox Code Playgroud)
rounded_button_rose_fonce.xml :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/rose_fonce" />
<stroke
android:width="1sp"
android:color="@color/rose_fonce" />
</shape>
Run Code Online (Sandbox Code Playgroud)
rounded_button_rose_normal.xml :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@color/rose_normal" />
<stroke
android:width="1sp"
android:color="@color/rose_fonce" />
</shape> …Run Code Online (Sandbox Code Playgroud) 我需要为我的相机应用程序创建图像。我在另一个圆圈内创建了一个圆圈,当我在 android studio 上看到它时看起来不错,但是在真实设备上运行它时,它与原来的不一样。这是来自真实设备的第一个图像和来自 android studio 的第二个图像。
这是我用来创建它的代码。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Larger circle in white-->
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<padding android:top="5dp" android:bottom="5dp" android:right="5dp" android:left="5dp"/>
<stroke
android:width="1dp"
android:color="#ffffff"/>
</shape>
</item>
<!-- Smaller white circle in front -->
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#ffffff"/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
为什么它显示不同的问题是什么。
我创造了一个drawable button_oval.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:dither="true"
android:shape="rectangle">
<corners android:radius="120dp" />
<solid android:color="#eceef5" />
<stroke
android:width="3dp"
android:color="#29395e" />
<size
android:width="300dp"
android:height="120dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
然后我在我的布局上使用它像这样:
// I want to add a icon inside this button
<Button
android:id="@+id/goToPersonalPage"
android:layout_width="110dp"
android:layout_height="50dp"
android:layout_marginLeft="30dp"
android:background="@drawable/button_oval"
android:text="@string/memberButton"
android:textColor="#29395e"
android:textSize="18dp" />
Run Code Online (Sandbox Code Playgroud)
我想在里面添加一个图标Button,是否有可能通过改变我的方式来完成它button_oval.xml?
最终输出应该如下图所示:
任何帮助将不胜感激.
我这里有一个 ShapeableImageView,笔画为 5dp:
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/profile_picture"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:scaleType="centerCrop"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/profile_toolbar"
app:shapeAppearanceOverlay="@style/circular"
app:strokeColor="@color/dark_blue"
app:strokeWidth="5dp" />
Run Code Online (Sandbox Code Playgroud)
这是结果:
我试图以编程方式更改形状的颜色,但它不起作用.
这是形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#9F2200"/>
<stroke android:width="2dp" android:color="#fff" />
</shape>
Run Code Online (Sandbox Code Playgroud)
这是我如何使用它作为按钮的背景
<Button
android:id="@+id/ibtn_EA_ColorPick_new"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/round_button"
/>
Run Code Online (Sandbox Code Playgroud)
这就是我如何改变它的颜色
GradientDrawable bgShape = (GradientDrawable)btn_ColorPick.getBackground();
bgShape.setColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)
但是,当我改变背景颜色时,它会从屏幕上删除按钮.