【问题标题】:Image set as background of toggle button is stretched android设置为切换按钮背景的图像被拉伸 android
【发布时间】:2019-12-01 17:17:34
【问题描述】:

我有一个切换按钮:

<ToggleButton
            android:id="@+id/tv_pmpSwitch"
            android:layout_width="0dp"
            android:layout_weight="0.1"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_view"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:textOn=""
            android:textOff=""
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:layout_centerVertical="true"
            android:paddingTop="16dp"
            android:layout_marginLeft="16dp"
            /> 


我的 toggle_view 可绘制对象是:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/ic_list_action"
        android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/ic_grid_action"
        android:state_checked="false"/>
</selector>


我不明白为什么背景中的图像被拉伸?我试过各种尺寸的图片。

【问题讨论】:

  • 按住切换按钮的线性布局的 weightSum 是多少?
  • weightsum 为 1 并且还有另外两个分别为 0.45 的文本视图
  • 尝试将 ToggleButton 的重量进一步降低到 0.05 或更小,并保持所有其他重量
  • 它不工作 Ansal Ali

标签: android android-layout


【解决方案1】:

你可以简单的在xml布局文件中设置:

android:minWidth="0dp"
android:minHeight="0dp"

图像将不再拉伸

【讨论】:

    【解决方案2】:
    <ToggleButton
                android:id="@+id/tv_pmpSwitch"
                android:layout_width="0dp"
                android:layout_height="28dp"
                android:layout_weight="0.1"
                android:background="@drawable/toggle_view"                
                android:textOff=""
                android:textOn="" />
    

    在你的代码上试试这个,只调整布局高度参数!

    编辑

    获取非拉伸图像的方法是使用位图而不是可绘制对象。 使用以下作为您的 xml 作为您的背景。

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item >
            <bitmap android:src="@drawable/ic_list_action"
              android:gravity="center_vertical|left" />
        </item>
        <item>
            <bitmap android:src="@drawable/ic_grid_action"
              android:gravity="center_vertical|left" />
        </item>
    </layer-list>
    

    【讨论】:

    • 这似乎有效。只要告诉我两件事,我就会接受它作为答案。第一:这个固定的 dp 高度是否会随着设备尺寸的变化而产生问题?第二:如果包装内容已经分配了重量总和,会有什么问题?谢谢
    • 立即查看答案,感谢您的帮助,但这就是问题所在
    • 这里的关键似乎是bitmapgravity 属性,没有它,图像仍然会被拉伸。您仍然可以将项目放在选择器而不是图层列表中。
    【解决方案3】:

    在尝试了几件事后,我发现了问题所在:
    weightSum 是罪魁祸首,分配的权重正在拉伸图像。

    <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="0.1"
                android:layout_height="wrap_content">
            <ToggleButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tv_pmpSwitch"
                android:background="@drawable/ic_toggle_list"
                />
            </LinearLayout>
    


    将整个代码放在 LL 父级中就可以了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多