View.setBackgroundResource(int resId)當resId代表的Drawable帶有Padding時,會改變View本身的Padding值
View.setBackgroundResource(int resId)原始碼如下:
/**
* Set the background to a given Drawable, or remove the background. If the
* background has padding, this View's padding is set to the background's
* padding. However, when a background is removed, this View's padding isn't
* touched. If setting the padding is desired, please use
* {@link #setPadding(int, int, int, int)}.
*
* @param background The Drawable to use as the background, or null to remove the
* background
*/
現在驗證如下:
1.Activity 佈局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFF00"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/test_tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/test_drawable_with_padding"
android:gravity="center"
android:padding="20dp"
android:text="HelloWorld" />
<TextView
android:id="@+id/test_tv_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:padding="20dp"
android:text="HelloWorld" />
<TextView
android:id="@+id/test_tv_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:padding="20dp"
android:text="HelloWorld" />
<Button
android:id="@+id/test_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Remove Background" />
</LinearLayout>
2.Activity 主要程式碼如下:
testTv1 = (TextView) findViewById(R.id.test_tv_1);
testTv2 = (TextView) findViewById(R.id.test_tv_2);
testTv3 = (TextView) findViewById(R.id.test_tv_3);
testBtn = (Button) findViewById(R.id.test_btn);
testTv2.setBackgroundResource(R.drawable.test_drawable_without_padding);//不帶padding的drawable
testTv3.setBackgroundResource(R.drawable.test_drawable_with_padding);//帶padding的drawable
testBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
testTv2.setBackgroundResource(0);
testTv3.setBackgroundResource(0);
}
});
3.Activity啟動後的介面如下:
可以發現當backGround Drawable帶有Padding時,View原來的Padding被設定為該backGround Drawable的padding值了。即
If the background has padding, this View's padding is set to the background's padding.
4.“REMOVE BACKGROUND” button click
當remove帶padding的Drawable後,View的Padding值是不會改變的(即還是remove之前帶padding 的backDrawable的padding)。即
However, when a background is removed, this View's padding isn't
touched.
相關文章
- Resources類中getString (int ResID)與getText (int ResID)的區別
- padding屬性值的順序padding
- offsetTop屬性值不受padding的影響padding
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- Padding - flutterpaddingFlutter
- padding模式padding模式
- padding oracle attack相關之padding oracle attackpaddingOracle
- margin與padding的區別padding
- eBPF HashMap 與 padding 的坑eBPFHashMappadding
- margin和padding有什麼區別padding
- 深入理解paddingpadding
- vue 變數賦值同時改變的問題Vue變數賦值
- Android的padding和margin區別Androidpadding
- 當個View下,使用Drawable入場退場動畫View動畫
- CSS padding內邊距CSSpadding
- CSS padding 內邊距CSSpadding
- css16 CSS PaddingCSSpadding
- WPF當屬性值改變時利用PropertyChanged事件來載入動畫事件動畫
- 關於IE處理margin和padding值超出父元素高度的問題padding
- 行內元素的padding和margin屬性padding
- padding對於元素position定位的影響padding
- 行內元素的padding和margin是否有效padding
- 我對Padding Oracle Attack的分析和思考paddingOracle
- css之margin && padding講解CSSpadding
- Android原始碼分析(LayoutInflater.from(this).inflate(resId,null);原始碼解析)Android原始碼Null
- margin/padding百分比值的計算padding
- padding和margin對於position定位的影響padding
- 關於attention中對padding的處理:maskpadding
- C++中的(unsigned int)&代表的意思C++
- http請求時nginx會去掉帶有下劃線(_)的Header鍵值HTTPNginxHeader
- Flutter 樣式基礎之 PaddingFlutterpadding
- CSS學習2—-padding/border/marginCSSpadding
- antd ProTable 設定padding為0padding
- [python]為什麼父類的值沒有改變Python
- padding對於margin的影響簡單介紹padding
- width和padding之間的關係介紹padding
- Java 中賦值類時候修改後原類中的值改變Java賦值
- Postgresqlddl在事務中可以回滾,truncate時relfilenode在當前會話會改變SQL會話