小编Val*_*a.V的帖子

如何设置Android中按钮内部矢量绘图的大小?

Android Studio Vector Assets工具将矢量drawable转换为PNG-s用于Lollipop之前的设备,但是我得到了质量非常差的PNG-s,你可以在这里看到:

将矢量转换为PNG

更重要的是,按钮的背景纯色应该是您在左侧看到的浅绿色,但是可绘制的覆盖它:

<item android:state_checked="true"
    android:drawable="@drawable/show">
    <shape android:shape="rectangle">
        <corners android:bottomRightRadius="8dp"/>
        <solid android:color="@color/waveComponentGreen"/>
    </shape>
</item>

<item android:state_checked="false"
    android:drawable="@drawable/hide">
    <shape android:shape="rectangle">
        <corners android:bottomRightRadius="8dp"/>
        <solid android:color="@color/waveComponentGreen"/>
    </shape>
</item>
Run Code Online (Sandbox Code Playgroud)

drawable的xml是(材质图标的默认值):

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#FF000000"
    android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
Run Code Online (Sandbox Code Playgroud)

我还希望通过调整值使图标显得更小,我注意到增加视口尺寸会减小图标,但我不确定我理解为什么.

那么:如何使图标和生成的PNG看起来更小,更少模糊,并在资源文件中设置背景颜色?谢谢.

编辑:我通过将它们组合在一个带有图层列表的单独xml文件中,设法获得带有图标的纯色背景:

<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <shape android:shape="rectangle">
        <corners android:bottomRightRadius="10dp"/>
        <solid android:color="@color/waveComponentGreen"/>
    </shape>
</item>
<item android:drawable="@drawable/show"
    android:top="10dp"
    android:bottom="10dp"
    android:left="10dp"
    android:right="10dp"
    />
Run Code Online (Sandbox Code Playgroud)

结果是:

一些调整的结果

我设法通过增加矢量drawable的宽度和高度来减少模糊.但是,如果没有android:top|bottom|left|right标签,则可拉伸的按钮会拉伸整个按钮区域.第二个按钮不需要具有背景纯色,因此我没有使用layer-list标签=>无法top|bottom|left|right为drawable 设置边距.
如果我减小按钮大小,我正在做的是减少按钮的可点击区域.

我更新的问题是如何设置按钮/切换按钮/单选按钮内的矢量可绘制的大小而不减小按钮本身的大小?

更新
我无法找到一种方法来调整API 21之前的设备上的矢量可绘制的大小.因此,我将按钮本身缩小,增加了每个按钮的触摸区域.

xml android vector button drawable

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

Android开发的循环继承 - 片段,活动和接口

我有一个带有几个片段的应用程序和一个管理它们的活动.为了避免片段之间的耦合,所有交互和更改都会通过活动 - 但这是我的问题 - 我在以下场景中得到循环继承编译时错误:

简而言之:

 class A extends Z implements B.listenerB, C.listenerC // cyclic inheritance involving A
 class B extends Y implements A.listenerA  //cyclic inheritance involving B
 class C extends Y implements A.listenerA  // cyclic inheritance involving A
Run Code Online (Sandbox Code Playgroud)

长:

    public class Fragment1 extends Fragment implements Activity1.onCustomEventListenerActivity {
           onCustomEventListenerFrag1 listener1;

        public interface onCustomEventListenerFrag1{
         void onCustomEventinFrag1();
        }

        public void someAction(){
           if (successful) 
               listener1.onCustomEvent(); //notify the activity of success
        }

        @Override
        public void onCustomEvent(){
            //respond to change from activity
        }
}
Run Code Online (Sandbox Code Playgroud)

这是我的示例活动: …

java interface callback event-listener android-fragments

3
推荐指数
1
解决办法
6063
查看次数