相关疑难解决方法(0)

setBackgroundResource()丢弃我的XML布局属性

我有一个视图,用作一个项目ListView.在我的自定义适配器中,我View.setBackgroundResource()根据项目在列表中的位置更改视图的背景.(我对列表中的第一个和最后一个项目有单独的资产.)

这会按预期设置正确的背景图像,但它具有令人讨厌的副作用,即我在视图的XML定义中设置的所有填充都被完全忽略.

(如果我在XML中设置了可绘制的背景,并且在运行时不要尝试在适配器中改变它,那么填充一切正常.)

如何更改背景图像并保留填充?这是一个错误吗?

编辑似乎其他人在这里发现了同样的问题:更改背景是否也改变了LinearLayout的填充?

android background padding drawable layer-list

69
推荐指数
4
解决办法
2万
查看次数

填充不适用于某些后台资源

任何人都可以向我解释为什么会这样吗?

我有一个相当简单的类扩展TextView.当我将背景颜色设置为Color.BLUE时,填充工作正常.当我将后台资源更改为android.R.drawable.list_selector_background时,我的填充不再应用.什么F?

这是我的UI类:

public class GhostDropDownOption extends TextView {

    TextView text_view;


    public GhostDropDownOption(Context context, AttributeSet attrs) {
        super(context, attrs);
        setup(context);
    }


    public GhostDropDownOption(Context context) {
        super(context);
        setup(context);
    }


    private void setup(Context context) {
        this.setClickable(false);
        // THE 2 LINES BELOW ARE THE ONLY THING I'M CHANGING
        //this.setBackgroundResource(android.R.drawable.list_selector_background);
        this.setBackgroundColor(Color.BLUE);
    }
}
Run Code Online (Sandbox Code Playgroud)

而我在布局中使用它像这样:

<trioro.voyeur.ui.GhostDropDownOption
    android:id="@+id/tv_dropdown_option_1"
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:gravity="center_vertical"
    android:text="@string/request_control_dropdown_option_1"
    android:textColor="#000000"
    android:padding="10dip"/>
Run Code Online (Sandbox Code Playgroud)

这是改变背景的结果: 在此输入图像描述

android android-view

8
推荐指数
1
解决办法
2381
查看次数

Android:调用textview.setBackgroundResource两次更改textview大小

我有一个贴有九个补丁的图像,我在activity.onCreate()期间设置了textview的背景。Textview具有WRAP_CONTENT布局,用于高度和宽度。它是通过代码而不是XML创建的。

_btnCurrent.setBackgroundResource(R.drawable.button_menu_off);
Run Code Online (Sandbox Code Playgroud)

这很好。我还有另外一张九幅图像,大小相同,唯一的区别是颜色。现在,如果以后再用其他图像调用setBackgroundResource,它将增加textview的高度,几乎增加一倍。另一个调用来自textview.onClick()

_btnCurrent.setBackgroundResource(R.drawable.button_menu_on);
Run Code Online (Sandbox Code Playgroud)

如果我再次调用它(在文本视图中再次单击),则没有任何效果。这很好,我想它也会在第一次点击时发生。所以:

Activity.onCreate()
{
    btnCurrent= new TextView(this);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    btnCurrent.setBackgroundResource(R.drawable.button_menu_hs_off);

    btnCurrent.setPadding(15, 5, 15, 5);
    btnCurrent.setGravity(Gravity.CENTER);

    btnCurrent.setText( GetString(id) );        
    btnCurrent.setOnClickListener(this);

}

onClick()
{
    _btnCurrent.setBackgroundResource(R.drawable.button_menu_on);
}


onCreate();  // -> called by Android during startup -> OK
....
onClick();   // called when user clicks on it -> btnCurrent has double height
....
onClick();   // called when user clicks again -> btnCurrent has same double height, no change in size
....
onClick();   // called when user clicks …
Run Code Online (Sandbox Code Playgroud)

android resize background-image textview

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

设置textview的填充仅在设置背景资源后才有效-Android

在设置背景填充后,将背景资源设置为textview的可绘制xml不会填充textview,但是反之亦然。怎么样 ?

作品

   textView.setBackgroundResource(borderColor);
   textView.setPadding(10, 0, 10, 0);
Run Code Online (Sandbox Code Playgroud)

不起作用

   textView.setPadding(10, 0, 10, 0);
   textView.setBackgroundResource(borderColor);
Run Code Online (Sandbox Code Playgroud)

android textview

0
推荐指数
1
解决办法
1207
查看次数