Remove duplicate code from ActionBarHelper. You can now set the drawables via the method calls
This commit is contained in:
parent
c9b117b706
commit
d937317012
|
@ -22,6 +22,7 @@ import org.sufficientlysecure.keychain.R;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.graphics.drawable.Drawable;
|
||||||
import android.support.v7.app.ActionBar;
|
import android.support.v7.app.ActionBar;
|
||||||
import android.support.v7.app.ActionBarActivity;
|
import android.support.v7.app.ActionBarActivity;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -56,28 +57,33 @@ public class ActionBarHelper {
|
||||||
* Sets custom view on ActionBar for Done/Cancel activities
|
* Sets custom view on ActionBar for Done/Cancel activities
|
||||||
*
|
*
|
||||||
* @param actionBar
|
* @param actionBar
|
||||||
* @param doneText
|
* @param firstText
|
||||||
* @param doneOnClickListener
|
* @param firstDrawableId
|
||||||
* @param cancelText
|
* @param firstOnClickListener
|
||||||
* @param cancelOnClickListener
|
* @param secondText
|
||||||
|
* @param secondDrawableId
|
||||||
|
* @param secondOnClickListener
|
||||||
*/
|
*/
|
||||||
public static void setDoneCancelView(ActionBar actionBar, int doneText,
|
public static void setTwoButtonView(ActionBar actionBar, int firstText, int firstDrawableId,
|
||||||
OnClickListener doneOnClickListener, int cancelText,
|
OnClickListener firstOnClickListener, int secondText, int secondDrawableId,
|
||||||
OnClickListener cancelOnClickListener) {
|
OnClickListener secondOnClickListener) {
|
||||||
|
|
||||||
// Inflate a "Done"/"Cancel" custom action bar view
|
// Inflate the custom action bar view
|
||||||
final LayoutInflater inflater = (LayoutInflater) actionBar.getThemedContext()
|
final LayoutInflater inflater = (LayoutInflater) actionBar.getThemedContext()
|
||||||
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
||||||
final View customActionBarView = inflater.inflate(
|
final View customActionBarView = inflater.inflate(
|
||||||
R.layout.actionbar_custom_view_done_cancel, null);
|
R.layout.actionbar_custom_view_done_cancel, null);
|
||||||
|
|
||||||
((TextView) customActionBarView.findViewById(R.id.actionbar_done_text)).setText(doneText);
|
TextView firstTextView = ((TextView) customActionBarView.findViewById(R.id.actionbar_done_text));
|
||||||
|
firstTextView.setText(firstText);
|
||||||
|
firstTextView.setCompoundDrawablesWithIntrinsicBounds(firstDrawableId, 0, 0, 0);
|
||||||
customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener(
|
customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener(
|
||||||
doneOnClickListener);
|
firstOnClickListener);
|
||||||
((TextView) customActionBarView.findViewById(R.id.actionbar_cancel_text))
|
TextView secondTextView = ((TextView) customActionBarView.findViewById(R.id.actionbar_cancel_text));
|
||||||
.setText(cancelText);
|
secondTextView.setText(secondText);
|
||||||
|
secondTextView.setCompoundDrawablesWithIntrinsicBounds(secondDrawableId, 0, 0, 0);
|
||||||
customActionBarView.findViewById(R.id.actionbar_cancel).setOnClickListener(
|
customActionBarView.findViewById(R.id.actionbar_cancel).setOnClickListener(
|
||||||
cancelOnClickListener);
|
secondOnClickListener);
|
||||||
|
|
||||||
// Show the custom action bar view and hide the normal Home icon and title.
|
// Show the custom action bar view and hide the normal Home icon and title.
|
||||||
actionBar.setDisplayShowTitleEnabled(false);
|
actionBar.setDisplayShowTitleEnabled(false);
|
||||||
|
@ -91,20 +97,22 @@ public class ActionBarHelper {
|
||||||
* Sets custom view on ActionBar for Done activities
|
* Sets custom view on ActionBar for Done activities
|
||||||
*
|
*
|
||||||
* @param actionBar
|
* @param actionBar
|
||||||
* @param doneText
|
* @param firstText
|
||||||
* @param doneOnClickListener
|
* @param firstOnClickListener
|
||||||
*/
|
*/
|
||||||
public static void setDoneView(ActionBar actionBar, int doneText,
|
public static void setOneButtonView(ActionBar actionBar, int firstText, int firstDrawableId,
|
||||||
OnClickListener doneOnClickListener) {
|
OnClickListener firstOnClickListener) {
|
||||||
// Inflate a "Done" custom action bar view to serve as the "Up" affordance.
|
// Inflate a "Done" custom action bar view to serve as the "Up" affordance.
|
||||||
final LayoutInflater inflater = (LayoutInflater) actionBar.getThemedContext()
|
final LayoutInflater inflater = (LayoutInflater) actionBar.getThemedContext()
|
||||||
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
||||||
final View customActionBarView = inflater
|
final View customActionBarView = inflater
|
||||||
.inflate(R.layout.actionbar_custom_view_done, null);
|
.inflate(R.layout.actionbar_custom_view_done, null);
|
||||||
|
|
||||||
((TextView) customActionBarView.findViewById(R.id.actionbar_done_text)).setText(doneText);
|
TextView firstTextView = ((TextView) customActionBarView.findViewById(R.id.actionbar_done_text));
|
||||||
|
firstTextView.setText(firstText);
|
||||||
|
firstTextView.setCompoundDrawablesWithIntrinsicBounds(firstDrawableId, 0, 0, 0);
|
||||||
customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener(
|
customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener(
|
||||||
doneOnClickListener);
|
firstOnClickListener);
|
||||||
|
|
||||||
// Show the custom action bar view and hide the normal Home icon and title.
|
// Show the custom action bar view and hide the normal Home icon and title.
|
||||||
actionBar.setDisplayShowTitleEnabled(false);
|
actionBar.setDisplayShowTitleEnabled(false);
|
||||||
|
@ -112,65 +120,4 @@ public class ActionBarHelper {
|
||||||
actionBar.setDisplayShowCustomEnabled(true);
|
actionBar.setDisplayShowCustomEnabled(true);
|
||||||
actionBar.setCustomView(customActionBarView);
|
actionBar.setCustomView(customActionBarView);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets custom view on ActionBar for Save activities
|
|
||||||
*
|
|
||||||
* @param actionBar
|
|
||||||
* @param saveText
|
|
||||||
* @param saveOnClickListener
|
|
||||||
*/
|
|
||||||
public static void setSaveView(ActionBar actionBar, int saveText,
|
|
||||||
OnClickListener saveOnClickListener) {
|
|
||||||
// Inflate a "Save" custom action bar view to serve as the "Up" affordance.
|
|
||||||
final LayoutInflater inflater = (LayoutInflater) actionBar.getThemedContext()
|
|
||||||
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
|
||||||
final View customActionBarView = inflater
|
|
||||||
.inflate(R.layout.actionbar_custom_view_save, null);
|
|
||||||
|
|
||||||
((TextView) customActionBarView.findViewById(R.id.actionbar_save_text)).setText(saveText);
|
|
||||||
customActionBarView.findViewById(R.id.actionbar_save).setOnClickListener(
|
|
||||||
saveOnClickListener);
|
|
||||||
|
|
||||||
// Show the custom action bar view and hide the normal Home icon and title.
|
|
||||||
actionBar.setDisplayShowTitleEnabled(false);
|
|
||||||
actionBar.setDisplayShowHomeEnabled(false);
|
|
||||||
actionBar.setDisplayShowCustomEnabled(true);
|
|
||||||
actionBar.setCustomView(customActionBarView);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets custom view on ActionBar for Save/Cancel activities
|
|
||||||
*
|
|
||||||
* @param actionBar
|
|
||||||
* @param saveText
|
|
||||||
* @param saveOnClickListener
|
|
||||||
* @param cancelText
|
|
||||||
* @param cancelOnClickListener
|
|
||||||
*/
|
|
||||||
public static void setSaveCancelView(ActionBar actionBar, int saveText,
|
|
||||||
OnClickListener saveOnClickListener, int cancelText,
|
|
||||||
OnClickListener cancelOnClickListener) {
|
|
||||||
|
|
||||||
// Inflate a "Done"/"Cancel" custom action bar view
|
|
||||||
final LayoutInflater inflater = (LayoutInflater) actionBar.getThemedContext()
|
|
||||||
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
|
||||||
final View customActionBarView = inflater.inflate(
|
|
||||||
R.layout.actionbar_custom_view_save_cancel, null);
|
|
||||||
|
|
||||||
((TextView) customActionBarView.findViewById(R.id.actionbar_save_text)).setText(saveText);
|
|
||||||
customActionBarView.findViewById(R.id.actionbar_save).setOnClickListener(
|
|
||||||
saveOnClickListener);
|
|
||||||
((TextView) customActionBarView.findViewById(R.id.actionbar_cancel_text))
|
|
||||||
.setText(cancelText);
|
|
||||||
customActionBarView.findViewById(R.id.actionbar_cancel).setOnClickListener(
|
|
||||||
cancelOnClickListener);
|
|
||||||
|
|
||||||
// Show the custom action bar view and hide the normal Home icon and title.
|
|
||||||
actionBar.setDisplayShowTitleEnabled(false);
|
|
||||||
actionBar.setDisplayShowHomeEnabled(false);
|
|
||||||
actionBar.setDisplayShowCustomEnabled(true);
|
|
||||||
actionBar.setCustomView(customActionBarView, new ActionBar.LayoutParams(
|
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class AppSettingsActivity extends ActionBarActivity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
// Inflate a "Done" custom action bar
|
// Inflate a "Done" custom action bar
|
||||||
ActionBarHelper.setDoneView(getSupportActionBar(), R.string.api_settings_save,
|
ActionBarHelper.setOneButtonView(getSupportActionBar(), R.string.api_settings_save, R.drawable.ic_action_done,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|
|
@ -88,7 +88,7 @@ public class RemoteServiceActivity extends ActionBarActivity {
|
||||||
final byte[] packageSignature = extras.getByteArray(EXTRA_PACKAGE_SIGNATURE);
|
final byte[] packageSignature = extras.getByteArray(EXTRA_PACKAGE_SIGNATURE);
|
||||||
|
|
||||||
// Inflate a "Done"/"Cancel" custom action bar view
|
// Inflate a "Done"/"Cancel" custom action bar view
|
||||||
ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.api_register_allow,
|
ActionBarHelper.setTwoButtonView(getSupportActionBar(), R.string.api_register_allow, R.drawable.ic_action_done,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -108,7 +108,7 @@ public class RemoteServiceActivity extends ActionBarActivity {
|
||||||
RemoteServiceActivity.this.finish();
|
RemoteServiceActivity.this.finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, R.string.api_register_disallow, new View.OnClickListener() {
|
}, R.string.api_register_disallow, R.drawable.ic_action_cancel, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// Disallow
|
// Disallow
|
||||||
|
@ -161,7 +161,7 @@ public class RemoteServiceActivity extends ActionBarActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inflate a "Done"/"Cancel" custom action bar view
|
// Inflate a "Done"/"Cancel" custom action bar view
|
||||||
ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.btn_okay,
|
ActionBarHelper.setTwoButtonView(getSupportActionBar(), R.string.btn_okay, R.drawable.ic_action_done,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
@ -173,7 +173,7 @@ public class RemoteServiceActivity extends ActionBarActivity {
|
||||||
RemoteServiceActivity.this.setResult(RESULT_OK, resultData);
|
RemoteServiceActivity.this.setResult(RESULT_OK, resultData);
|
||||||
RemoteServiceActivity.this.finish();
|
RemoteServiceActivity.this.finish();
|
||||||
}
|
}
|
||||||
}, R.string.btn_do_not_save, new View.OnClickListener() {
|
}, R.string.btn_do_not_save, R.drawable.ic_action_cancel, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// cancel
|
// cancel
|
||||||
|
@ -214,7 +214,7 @@ public class RemoteServiceActivity extends ActionBarActivity {
|
||||||
String text = "<font color=\"red\">" + errorMessage + "</font>";
|
String text = "<font color=\"red\">" + errorMessage + "</font>";
|
||||||
|
|
||||||
// Inflate a "Done" custom action bar view
|
// Inflate a "Done" custom action bar view
|
||||||
ActionBarHelper.setDoneView(getSupportActionBar(), R.string.btn_okay,
|
ActionBarHelper.setOneButtonView(getSupportActionBar(), R.string.btn_okay, R.drawable.ic_action_done,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -134,14 +134,14 @@ public class EditKeyActivity extends ActionBarActivity {
|
||||||
* @param intent
|
* @param intent
|
||||||
*/
|
*/
|
||||||
private void handleActionCreateKey(Intent intent) {
|
private void handleActionCreateKey(Intent intent) {
|
||||||
// Inflate a "Done"/"Cancel" custom action bar
|
// Inflate a "Save"/"Cancel" custom action bar
|
||||||
ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.btn_save,
|
ActionBarHelper.setTwoButtonView(getSupportActionBar(), R.string.btn_save, R.drawable.ic_action_save,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
saveClicked();
|
saveClicked();
|
||||||
}
|
}
|
||||||
}, R.string.btn_do_not_save, new View.OnClickListener() {
|
}, R.string.btn_do_not_save, R.drawable.ic_action_cancel, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
cancelClicked();
|
cancelClicked();
|
||||||
|
@ -249,8 +249,8 @@ public class EditKeyActivity extends ActionBarActivity {
|
||||||
* @param intent
|
* @param intent
|
||||||
*/
|
*/
|
||||||
private void handleActionEditKey(Intent intent) {
|
private void handleActionEditKey(Intent intent) {
|
||||||
// Inflate a "Done"/"Cancel" custom action bar
|
// Inflate a "Save"/"Cancel" custom action bar
|
||||||
ActionBarHelper.setSaveView(getSupportActionBar(), R.string.btn_save,
|
ActionBarHelper.setOneButtonView(getSupportActionBar(), R.string.btn_save, R.drawable.ic_action_save,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|
|
@ -50,14 +50,14 @@ public class PreferencesKeyServerActivity extends ActionBarActivity implements O
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
// Inflate a "Done"/"Cancel" custom action bar view
|
// Inflate a "Done"/"Cancel" custom action bar view
|
||||||
ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.btn_okay,
|
ActionBarHelper.setTwoButtonView(getSupportActionBar(), R.string.btn_okay, R.drawable.ic_action_done,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// ok
|
// ok
|
||||||
okClicked();
|
okClicked();
|
||||||
}
|
}
|
||||||
}, R.string.btn_do_not_save, new View.OnClickListener() {
|
}, R.string.btn_do_not_save, R.drawable.ic_action_cancel, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// cancel
|
// cancel
|
||||||
|
|
|
@ -46,14 +46,14 @@ public class SelectPublicKeyActivity extends ActionBarActivity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
// Inflate a "Done"/"Cancel" custom action bar view
|
// Inflate a "Done"/"Cancel" custom action bar view
|
||||||
ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.btn_okay,
|
ActionBarHelper.setTwoButtonView(getSupportActionBar(), R.string.btn_okay, R.drawable.ic_action_done,
|
||||||
new View.OnClickListener() {
|
new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// ok
|
// ok
|
||||||
okClicked();
|
okClicked();
|
||||||
}
|
}
|
||||||
}, R.string.btn_do_not_save, new View.OnClickListener() {
|
}, R.string.btn_do_not_save, R.drawable.ic_action_cancel, new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// cancel
|
// cancel
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
<!--
|
|
||||||
Copyright 2013 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:dividerPadding="12dp"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:divider="@drawable/abc_list_divider_holo_light"
|
|
||||||
android:showDividers="end" >
|
|
||||||
|
|
||||||
<include layout="@layout/actionbar_include_save_button" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
|
@ -1,29 +0,0 @@
|
||||||
<!--
|
|
||||||
Copyright 2013 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:dividerPadding="12dp"
|
|
||||||
android:divider="@drawable/abc_list_divider_holo_light"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:showDividers="middle">
|
|
||||||
|
|
||||||
<include layout="@layout/actionbar_include_cancel_button" />
|
|
||||||
|
|
||||||
<include layout="@layout/actionbar_include_save_button" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
|
@ -1,36 +0,0 @@
|
||||||
<!--
|
|
||||||
Copyright 2013 The Android Open Source Project
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/actionbar_save"
|
|
||||||
style="@style/Widget.AppCompat.ActionButton"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_weight="1">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/actionbar_save_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:drawableLeft="@drawable/ic_action_save"
|
|
||||||
android:drawablePadding="8dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:paddingRight="20dp"
|
|
||||||
style="@style/Widget.AppCompat.Light.ActionBar.TabText"
|
|
||||||
android:text="Save (set in-code!)" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
Loading…
Reference in New Issue