按钮包含图像时无法调整位置

时间:2018-01-04 07:17:52

标签: android android-drawable

我有一个动态判断,所以我用java设置了drawable。 enter image description here 我的问题是,我不知道调整我的图像位置很热,我尝试在xml中使用android:drawablePadding="",在java中使用setCompoundDrawablePadding();

他们都改变了我的文字位置而不是图像。

我仍然尝试更改drawable.setBounds()设置,但看起来更改比例而不是位置。

如何更改按钮内的图像?任何帮助,将不胜感激。提前谢谢。

这是我的bttuon.xml:

<Button
            android:id="@+id/goToPersonalPage"
            android:layout_width="145dp"
            android:layout_height="50dp"
            android:layout_marginLeft="20dp"
            android:background="@drawable/button_oval"
            android:text="@string/memberButton"
            android:textColor="#29395e"
            android:textSize="18dp" />

这是关于按钮的代码:

goToPersonalPage.setCompoundDrawables(setIcon(R.drawable.btn_member_green_128x128), null, null, null);

setIcon函数是:

private Drawable setIcon(int id) {
        Drawable drawable = getResources().getDrawable(id);
        drawable.setBounds(0, 0, (int) (drawable.getIntrinsicWidth() * 0.2),
                (int) (drawable.getIntrinsicHeight() * 0.2));

        return drawable;
    }

3 个答案:

答案 0 :(得分:1)

当您动态添加内容时,您可以为按钮布局创建 LayoutParams ,然后在其上设置边距,然后使用setCompoundDrawablesWithIntrinsicBounds应用于按钮视图。< / p>

private LinearLayout.LayoutParams viewGroup = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

    viewGroup.setMargins(dimens, dimens, dimens, dimens);
    goToPersonalPage.setCompoundDrawablePadding(10);
    goToPersonalPage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.btn_member_green_128x128,0,0,0);
    goToPersonalPage.setLayoutParams(this.viewGroup);

答案 1 :(得分:1)

添加android:paddingLeft="20dp"为您添加左侧填充Button

<Button
    android:id="@+id/goToPersonalPage"
    android:layout_width="145dp"
    android:layout_height="50dp"
    android:layout_marginLeft="20dp"
    android:background="@drawable/button_oval"
    android:text="@string/memberButton"
    android:textColor="#29395e"
    android:paddingLeft="20dp"
    android:textSize="18dp" />

使用android:gravity="right"更改TextView的位置。

答案 2 :(得分:1)

只需添加要指定的填充 - :

def count_of_each_categories(self,y_train=None,y_test=None,technology_segment=None):
    """
    :param y_train:
    :param y_test:
    :return:
    """
    df_train = pd.DataFrame()
    df_train[technology_segment] = y_train
    df_test = pd.DataFrame()
    df_train['freq'] = df_train[technology_segment].value_counts()
    df = pd.DataFrame()
    df['freq'] = df_train[technology_segment].value_counts()

    ax = plt.subplot(111, frame_on=False)  # no visible frame
    ax.xaxis.set_visible(False)  # hide the x axis
    ax.yaxis.set_visible(False)  # hide the y axis
    # df.plot()
    table(ax, df,cellLoc = 'center', rowLoc = 'center',
      loc='top')  # where df is your data frame
    plt.show()
    plt.savefig(r"/Users/nitesh/OneDrive/Work/GE_Python_Workspace/ClassifierApproaches/Excel Documents/"
                 r"Fintech/mytable.png")