Es gibt viele Tutorials und Fragen zu SO, die benutzerdefinierte Titelleisten implementieren. In meiner benutzerdefinierten Titelleiste habe ich jedoch einen benutzerdefinierten Verlauf für den Hintergrund und möchte wissen, wie ich ihn dynamisch in meinem Code festlegen kann.
Hier wird meine benutzerdefinierte Titelleiste aufgerufen:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.foo_layout);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_bar);
Und das ist mein custom_title_bar
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@layout/custom_title_bar_background_colors">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/title_bar_logo"
android:gravity="center_horizontal"
android:paddingTop="0dip"/>
</LinearLayout>
Wie Sie sehen können, wird der Hintergrund des linearen Layouts von diesem Typen definiert:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#616261"
android:endColor="#131313"
android:angle="270"
/>
<corners android:radius="0dp" />
</shape>
Ich möchte diese Verlaufsfarben dynamisch in meinem Code festlegen. Ich möchte sie nicht wie derzeit in meiner XML-Datei fest codieren.
Ich bin offen für alle Ideen, wenn Sie einen Hintergrundverlauf besser einstellen können.
Danke im Voraus!!
quelle
setBackgroundDrawable()
ist veraltet, da ich denke, API 16. Sie solltensetBackground()
auch / stattdessen verwenden. Siehe stackoverflow.com/questions/27141279/…Wenn die akzeptierte Antwort nicht funktioniert, können Sie versuchen, sie festzulegen
foreground
.color.setForeground(gradient);
quelle