[英]Change shape on an inflated View - Android
我有以下形狀:1)quizgeneralanswershape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners android:radius="100dp"/>
<gradient
android:angle="45"
android:centerX="35%"
android:startColor="#E8E8E8"
android:centerColor="#7995A8"
android:endColor="#000000"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="270dp"
android:height="60dp"
/>
<stroke
android:width="3dp"
android:color="#878787"
/>
2)quizrightanswer.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners android:radius="100dp"/>
<gradient
android:angle="45"
android:centerX="35%"
android:startColor="#00FF80"
android:centerColor="#66FFB2"
android:endColor="#000000"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="270dp"
android:height="60dp"
/>
<stroke
android:width="3dp"
android:color="#878787"
/>
我在布局文件夾中還創建了另外2個xml文件,以便使用所需的形狀描述所需的布局。 這是一個:quizrightanswer.xml:
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/quizButton"
android:text="Button"
android:textColor="#FFFFFF"
android:textSize="13sp"
android:layout_width="270dp"
android:layout_height="60dp"
android:background="@drawable/quizrightanswershape"
android:clickable="true"
/>
我可以為某個特定形狀充氣並使用它。 但是,我想知道是否有任何方法可以給已經存在的物體賦予新的形狀。 更清楚地說,我想在OnClick
事件上更改按鈕的形狀。 這是一些我的活動代碼,可以正常工作:
quizTableLayout = (TableLayout) findViewById(R.id.quizTableLayout);
view = LayoutInflater.from(this).inflate(R.layout.quizquestion, null);//works fine
我希望在視圖對象中單擊時給出一個quizrightanswershape形狀。 這怎么可能? 我想到的解決方案是使用舊視圖的特定參數(例如文本)刪除舊形狀並為新形狀充氣,但我認為這是不正確的,而且也不是很快。
很簡單 您是將一般形狀設置為按鈕的背景嗎? 是的,請使用findViewById在布局中找到您的按鈕,然后附加一個OnClickListener,您將在其中使用setBackground或setBackgroundDrawable到按鈕以更改背景形狀。
為什么您不簡單地更改按鈕的背景?
您可以通過以下簡單方式更改它:
mButton.setBackground(getResources().getDrawable(R.drawable.yourShape));
如果您要更改按鈕形狀(如果用戶單擊按鈕),並且如果不再次按下,則按鈕具有舊形狀,因此
您可以使用如下形狀:
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" >
<item android:state_pressed="true" android:state_focused="true">
<shape>
<gradient
android:startColor="#f00"
android:endColor="#f00"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#eee"/>
<corners
android:radius="3dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#ccc"
android:endColor="#ccc"
android:angle="270"/>
<stroke
android:width="2dp"
android:color="#ccc"/>
<corners
android:radius="3dp" />
</shape>
</item>
</selector>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.