我有CustomLayout其中TextView我設置文本和繪製編程但是問題是當我設置drawable它正在添加一個巨大的填充與我想繪製更多在中心而不是頂部。刪除drawableTop和文本之間的填充
定製的ViewGroup
public class ProfileGridView extends FrameLayout {
public ProfileGridView(@NonNull Context context) {
super(context);
initView(context,null);
}
public ProfileGridView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView(context,attrs);
}
public ProfileGridView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context,attrs);
}
@TargetApi(21)
public ProfileGridView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
initView(context,attrs);
}
public void initView(Context context, AttributeSet attrs) {
TextView gridTextView;
View view = inflate(context, R.layout.square_grid, null);
gridTextView = (TextView) view.findViewById(R.id.grid_description);
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.ProfileGridView);
Drawable drawable = array.getDrawable(R.styleable.ProfileGridView_drawble);
String description = array.getString(R.styleable.ProfileGridView_grid_description);
gridTextView.setText(description);
gridTextView.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
addView(view);
array.recycle();
}
}
CustomView LayoutFile
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="8dp"
android:gravity="center"
android:padding="0dp"
android:textSize="20sp" />
MainActivit.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.views.ProfileGridView
android:layout_width="200dp"
android:layout_height="200dp"
app:drawble="@drawable/ic_message"
app:grid_description="Message"/>
</RelativeLayout>
我想這是做到這一點的唯一方法,而不是使用LinearLayout,我想用TextView設置ImageDrawable頂部 –
@prathamkesarkar檢查編輯 – jorgeavilae
通過攻擊可繪製的邊界你的意思是將TextView的高度設置爲200dp並將wrap_content添加到它的高度在activity_main –